Pythonチュートリアル

Pythonホーム Pythonイントロ Pythonはじめに Python構文 Pythonコメント Python変数 Pythonデータ型 Python番号 Pythonキャスティング Python文字列 Pythonブール値 Python演算子 Pythonリスト Pythonタプル Pythonセット Python辞書 Python If ... Else PythonのWhileループ PythonForループ Python関数 Python Lambda Python配列 Pythonクラス/オブジェクト Pythonの継承 Pythonイテレータ Pythonスコープ Pythonモジュール Pythonの日付 Python数学 Python JSON Python RegEx Python PIP Python試してみてください... Pythonユーザー入力 Python文字列フォーマット

ファイル処理

Pythonファイル処理 Python読み取りファイル Python書き込み/ファイルの作成 Pythonファイルの削除

Pythonモジュール

NumPyチュートリアル パンダ攻略 Scipyチュートリアル

Python Matplotlib

Matplotlibイントロ Matplotlibはじめに Matplotlib Pyplot Matplotlibプロット Matplotlibマーカー Matplotlibライン Matplotlibラベル Matplotlibグリッド Matplotlibサブプロット Matplotlib散布図 Matplotlibバー Matplotlibヒストグラム Matplotlib円グラフ

機械学習

入門 平均中央値モード 標準偏差 パーセンタイル データ配信 正規データ分布 散布図 線形回帰 多項式回帰 重回帰 規模 トレーニング/テスト デシジョンツリー

Python MySQL

MySQLはじめに MySQLデータベースの作成 MySQLテーブルの作成 MySQL挿入 MySQL Select MySQL Where MySQL Order By MySQL削除 MySQLドロップテーブル MySQLアップデート MySQLの制限 MySQL参加

Python MongoDB

MongoDBはじめに MongoDBデータベースの作成 MongoDBCreateコレクション MongoDBインサート MongoDB検索 MongoDBクエリ MongoDBソート MongoDB削除 MongoDBドロップコレクション MongoDBアップデート MongoDBの制限

Pythonリファレンス

Pythonの概要 Python組み込み関数 Python文字列メソッド Pythonリストメソッド Python辞書メソッド Pythonタプルメソッド Pythonセットメソッド Pythonファイルメソッド Pythonキーワード Pythonの例外 Python用語集

モジュールリファレンス

ランダムモジュール リクエストモジュール 統計モジュール 数学モジュール cMathモジュール

Pythonハウツー

リストの重複を削除する 文字列を逆にする 2つの数字を追加する

Pythonの例

Pythonの例 Pythonコンパイラ Python演習 Pythonクイズ Python証明書

機械学習-スケール


スケール機能

データの値が異なり、測定単位が異なる場合でも、それらを比較するのは難しい場合があります。メートルと比較してキログラムとは何ですか?または時間と比較した高度?

この問題の答えはスケーリングです。データを、比較しやすい新しい値にスケーリングできます。

下の表を見てください。これは 重回帰の章で使用したものと同じデータセットですが、今回はボリューム列にcm 3ではなくリットル(1000ではなく1.0)の値が含まれています。

このファイルはテストのみを目的としており、 cars2.csvからダウンロードできます。

車両 モデル 音量 重さ CO2
トヨタ アイゴ 1.0 790 99
三菱 スペーススター 1.2 1160 95
シュコダ シティゴ 1.0 929 95
フィアット 500 0.9 865 90
ミニ クーパー 1.5 1140 105
VW 上! 1.0 929 105
シュコダ ファビア 1.4 1109 90
メルセデス Aクラス 1.5 1365 92
フォード フィエスタ 1.5 1112 98
アウディ A1 1.6 1150 99
ヒュンダイ I20 1.1 980 99
鈴木 迅速 1.3 990 101
フォード フィエスタ 1.0 1112 99
ホンダ シビック 1.6 1252 94
ヒュンダイ I30 1.6 1326 97
オペル アストラ 1.6 1330 97
BMW 1 1.6 1365 99
マツダ 3 2.2 1280 104
シュコダ 急速 1.6 1119 104
フォード 集中 2.0 1328 105
フォード モンデオ 1.6 1584 94
オペル 記章 2.0 1428 99
メルセデス Cクラス 2.1 1365 99
シュコダ オクタビア 1.6 1415 99
ボルボ S60 2.0 1415 99
メルセデス CLA 1.5 1465 102
アウディ A4 2.0 1490 104
アウディ A6 2.0 1725年 114
ボルボ V70 1.6 1523 109
BMW 5 2.0 1705 114
メルセデス Eクラス 2.1 1605 115
ボルボ XC70 2.0 1746年 117
フォード B-Max 1.6 1235 104
BMW 2 1.6 1390 108
オペル ザフィーラ 1.6 1405 109
メルセデス SLK 2.5 1395 120

ボリューム1.0とウェイト790を比較するのは難しい場合がありますが、両方を比較可能な値にスケーリングすると、一方の値がもう一方の値とどの程度比較されているかを簡単に確認できます。

データをスケーリングする方法はいくつかありますが、このチュートリアルでは、標準化と呼ばれる方法を使用します。

標準化方法では、次の式を使用します。

z = (x - u) / s

ここzで、は新しい値、 xは元の値、 uは平均、sは標準偏差です。

上記のデータセットから重み列を取得すると、最初の値は790になり、スケーリングされた値は次のようになります。

(790 - ) / = -2.1

上記のデータセットからボリューム列を取得する場合、最初の値は1.0であり、スケーリングされた値は次のようになります。

(1.0 - ) / = -1.59

これで、790と1.0を比較する代わりに、-2.1と-1.59を比較できます。

これを手動で行う必要はありません。Pythonsklearnモジュールには、StandardScaler() データセットを変換するためのメソッドを持つScalerオブジェクトを返すというメソッドがあります。

[重量]列と[体積]列のすべての値をスケーリングします。

import pandas
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()

df = pandas.read_csv("cars2.csv")

X = df[['Weight', 'Volume']]

scaledX = scale.fit_transform(X)

print(scaledX)

結果:

最初の2つの値は-2.1と-1.59であることに注意してください。これは、次の計算に対応しています。

[[-2.10389253 -1.59336644]
 [-0.55407235 -1.07190106]
 [-1.52166278 -1.59336644]
 [-1.78973979 -1.85409913]
 [-0.63784641 -0.28970299]
 [-1.52166278 -1.59336644]
 [-0.76769621 -0.55043568]
 [ 0.3046118  -0.28970299]
 [-0.7551301  -0.28970299]
 [-0.59595938 -0.0289703 ]
 [-1.30803892 -1.33263375]
 [-1.26615189 -0.81116837]
 [-0.7551301  -1.59336644]
 [-0.16871166 -0.0289703 ]
 [ 0.14125238 -0.0289703 ]
 [ 0.15800719 -0.0289703 ]
 [ 0.3046118  -0.0289703 ]
 [-0.05142797  1.53542584]
 [-0.72580918 -0.0289703 ]
 [ 0.14962979  1.01396046]
 [ 1.2219378  -0.0289703 ]
 [ 0.5685001   1.01396046]
 [ 0.3046118   1.27469315]
 [ 0.51404696 -0.0289703 ]
 [ 0.51404696  1.01396046]
 [ 0.72348212 -0.28970299]
 [ 0.8281997   1.01396046]
 [ 1.81254495  1.01396046]
 [ 0.96642691 -0.0289703 ]
 [ 1.72877089  1.01396046]
 [ 1.30990057  1.27469315]
 [ 1.90050772  1.01396046]
 [-0.23991961 -0.0289703 ]
 [ 0.40932938 -0.0289703 ]
 [ 0.47215993 -0.0289703 ]
 [ 0.4302729   2.31762392]]


CO2値を予測する

重回帰の章のタスクは、車の重量と体積しかわからない場合に、車からのCO2排出量を予測することでした。

データセットをスケーリングする場合、値を予測するときにスケールを使用する必要があります。

重量2300キログラムの1.3リッター車からのCO2排出量を予測します。

import pandas
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()

df = pandas.read_csv("cars2.csv")

X = df[['Weight', 'Volume']]
y = df['CO2']

scaledX = scale.fit_transform(X)

regr = linear_model.LinearRegression()
regr.fit(scaledX, y)

scaled = scale.transform([[2300, 1.3]])

predictedCO2 = regr.predict([scaled[0]])
print(predictedCO2)

結果:

[107.2087328]