###前提・実現したいこと
http://neuro-educator.com/ml18/ のサイトを参考に自分でも回帰を実装しようと思い、プログラムを書いていたところ下記のエラーがでました。
###発生している問題・エラーメッセージ
ValueError: Found input variables with inconsistent numbers of samples: [84, 105]
---追記
上記のエラーは解決しましたが、進めていくうちに次のエラーが発生しました
「SGDの平均2乗誤差」と「SVRの平均二乗誤差」
47.8755773832
49.403758817
Data with input dtype int64 was converted to float64 by StandardScaler.
warnings.warn(msg, DataConversionWarning)
###該当のソースコード
-*- coding: utf-8 -*- import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn import model_selection, preprocessing, linear_model ,svm#機械学習用のライブラリ from matplotlib import pyplot as plt df = pd.read_csv("kaozahyou3.csv",header=None,skiprows=True , sep=",") df.columns = ['leye_x','leye_y','reye_x','reye_y','nose_x','nose_y','lmouth_x','lmouth_y','rmouth_x','rmouth_y','chin_x','chin_y','pitch'] X_rm=df[['nose_x']].values X = df.iloc[:,0:12] Y = df['pitch'].values #3:データの整形------------------------------------------------------- sc=preprocessing.StandardScaler() sc.fit(X) X=sc.transform(X) sc.fit(X_rm) X_rm=sc.transform(X_rm) #4:学習データとテストデータに分割する------------------------------- X_rm_train, X_rm_test, Y_train, Y_test = model_selection.train_test_split(X_rm, Y, test_size=0.5, random_state=0) #5:SGD Regressorを適用する------------------------------------------- clf_rm = linear_model.SGDRegressor(max_iter=1000) clf_rm.fit(X_rm_train, Y_train) #解説6:SVR linear Regressorを適用する------------------------------------------- clf_svr = svm.SVR(kernel='linear', C=1e3, epsilon=2.0) clf_svr.fit(X_rm_train, Y_train) #7:結果をプロットする------------------------------------------------ line_X=np.arange(0, 250, 1) #3から10まで1刻み line_Y_sgd=clf_rm.predict(line_X[:, np.newaxis]) line_Y_svr=clf_svr.predict(line_X[:, np.newaxis]) plt.figure(figsize=(30,30)) plt.subplot(2, 1, 1) plt.scatter(X_rm_train, Y_train, c='b', marker='s') plt.plot(line_X, line_Y_sgd, c='r') plt.plot(line_X, line_Y_svr, c='g') plt.show # 8:誤差------------------------------------------------- Y_pred_sgd=clf_rm.predict(X_rm_test) Y_pred_svr=clf_svr.predict(X_rm_test) print("\n「SGDの平均2乗誤差」と「SVRの平均二乗誤差」") RMS_sgd=np.mean((Y_pred_sgd - Y_test) ** 2) RMS_svr=np.mean((Y_pred_svr - Y_test) ** 2) print(RMS_sgd) print(RMS_svr)
###試したこと
いままでも小さなエラーは出ていて少しづつ解決してきたのですが、
このエラーで詰まってしまいました。
ネットを探しながら解決法を見つけているのですが、見つかりません。
###補足情報(言語/FW/ツール等のバージョンなど)
windows8.1
python 3.5
あなたの回答
tips
プレビュー