見出し画像

線形回帰で予測値を表示する

#学習 #勉強 #Python #プログラミング

データを食わせて、予測値を出す。
それだけのために四苦八苦しました。

グラフも不要、予測結果が正しいかの判断も不要。
とりあえず、動かして試すだけ。

こういうコードを作ってみました。
日時と数値のCSVファイルを食わせて、今日の数値を予測させるのです。

蛇口をひねれば、水が出る。
数値を入力させれば、予測値が出る。
そういうサンプルコードが世の中に増えてほしいです。

そうしないと、誰もが簡単にAI(機械学習)を利用できません。


このコード、何か落とし穴があるような気がするが、私の能力ではよく分かりません。


#csvをデータフレームとして利用するために必要
import pandas as pd


#Matplotlibはグラフを描いてくれるライブラリ
#グラフを描写しないのでコメント化

#from matplotlib import pyplot as plt

#計算用のCSVをロードする
df = pd.read_csv('csv.csv', names=('ds','y'),dtype = {'ds':'object', 'y':'float64' })

#日付データがobject型なので 、DateTime型へ変更
#print (df.dtypes)
df_datetime_cast =pd.to_datetime(df.ds)
#print (df_datetime_cast.dtypes)

df.ds=df_datetime_cast

#ネットから拾ってきた変換のためのコード
#2次元配列のObject型をDateTime型へ変更する
#他にうまい方法がありそうだけど、知りません。
import datetime as dt

X_cnv = pd.DataFrame(np.array( df.ds.values, dtype='datetime64[ns]'))
X_cnv.columns = ["Date"]
X_cnv['Date'] = pd.to_datetime(X_cnv['Date'])
X_cnv['Date']=X_cnv['Date'].map(dt.datetime.toordinal)

x = X_cnv

#読み込んだCSVの配列を2次元配列に変換する
y = pd.DataFrame(df.y.values, columns = ['y'])


#グラフに表示
#plt .plot_date(x,y)


#グラフのラベルとタイトルを指定
#plt .title('Graph')
#plt .ylabel('weight')
#plt .xlabel('DataTime')

#表示する命令らしいが 、その前に表示されてる?
#plt .show()

#訓練データとテストデータに仕分けするコード
#正確な統計なのか 、観察しないので省略
#from sklearn.model_selection import train_test_split

#x_train , x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 0)
#print (x_train)
#print (x_test)
#print (y_train)
#print (y_test)

#線形回帰のsklearn LinearRegression() を使う宣言
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()

#機械学習
regressor.fit(x,y)

#線形回帰の予測値を得る
#直接 、予測値を計算させたいので、無効化
#y_pred = regressor.predict(x_test)
#print (x_test)
#print (y_pred)

#グラフも表示させない
#csvのデータ
#plt .plot_date(x, y, color = 'green')

#予測したデータ
#plt .plot_date(x_test, regressor.predict(x_test), color = 'blue')

#タイトルなど
#plt .title('Graph')
#plt .ylabel('kg')
#plt .xlabel('day')
#plt .show()


#未来の数値を予測 (今日の時点で)

#今日の数値を予測するために 、DateTime型の二次元配列のデータを作る
ValueYouWantToPredict=[[dt.datetime.now()]]

#ネットから拾ってきた変換のためのコード
#2次元配列のObject型をDateTime型へ変更する
#他にうまい方法がありそうだけど、知りません。
X_cnv2 = pd.DataFrame(np.array( ValueYouWantToPredict, dtype='datetime64[ns]'))
X_cnv2.columns = ["Date"]
X_cnv2['Date'] = pd.to_datetime(X_cnv2['Date'])
X_cnv2['Date']=X_cnv2['Date'].map(dt.datetime.toordinal)

#予測値を計算する
y_pred_abc = regressor.predict(X_cnv2)
#print (X_cnv2)

#予測値の表示
print(y_pred_abc)

この記事が気に入ったらサポートをしてみませんか?