2015年12月30日水曜日

python scikit-learnでの線形回帰

データサイエンティスト養成読本 機械学習入門編
http://gihyo.jp/book/2015/978-4-7741-7631-4
[scikit-learn 入門]リスト1のコードめも

list1.py (python scikit-learnでの線形回帰)
----------------------------------------------
# coding:utf-8

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model, datasets

# 乱数によりデータ生成
np.random.seed(0) # 乱数の種を設定。これを設定しないと実行する度に違うデータを生成
regdata = datasets.make_regression(100, 1, noise=20.00)
# make_regression の第1引数:サンプル数, 第2引数:フィーチャー数(入力データの次元), 第3引数:ノイズの大きさ

# 学習を用いてモデルパラメータを表示
lin = linear_model.LinearRegression() # 線形回帰のインスタンス生成
lin.fit ( regdata[0], regdata[1] )   # フィッティングの計算
print ( "coef and intercept :", lin.coef_, lin.intercept_ )  # 回帰直線を y =ax + b とすると lin.coef_:係>数a, lin.intercept_:切片b
print ( "score :", lin.score(regdata[0],regdata[1]) ) # どのくらいうまくあてはまっているかスコア。値が大きいほど良い

# グラフを描画
xr = [-2.5, 2,5]
plt.plot (xr, lin.coef_ * xr + lin.intercept_)  # 回帰直線を描画
plt.scatter ( regdata[0], regdata[1])           # データ点を描画

plt.show()
----------------------------------------------
実行結果
$ python list1.py
('coef and intercept :', array([ 42.85335573]), -1.6283636540614475)
('score :', 0.80333572865564495)

0 件のコメント:

コメントを投稿