今回はAI AcademyのKaggleでデータ分析ができるようになりたい>回帰分析とはという部分で遭遇したエラーと、その解決策について説明していきたいと思います。
エラー文
エラー本文はこちら。
xpected 2D array, got scalar array instead:array=25.
環境
- MacBook Pro late2016 TouchBar
- macOS Mojave バージョン10.14.2
- Anacondaを利用して、pythonをダウンロード
- scikit-learn バージョン 0.20.2
状況とエラーが出たコード
# 学習データ x = [[12],[16],[20],[28],[36]] y = [[700],[900],[1300],[1750],[1800]] import matplotlib.pyplot as plt plt.figure() plt.title('Relation between diameter and price') #タイトル plt.xlabel('diameter') #軸ラベル plt.ylabel('price') #軸ラベル plt.scatter(x,y) #散布図の作成 plt.axis([0, 50, 0, 2500]) #表の最小値、最大値 plt.grid(True) #grid線 plt.show() from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(x,y) price = model.predict(25) print('25 inches pizza should cost: %s円'%price[0][0]) x_test = [[16],[18],[22],[32],[24]] y_test = [[1100],[850],[1500],[1800],[1100]] score = model.score(x_test,y_test) print("r-squared:",score) from sklearn.linear_model import LinearRegression x = [[12,2],[16,1],[20,0],[28,2],[36,0]] y = [[700],[900],[1300],[1750],[1800]] model = LinearRegression() model.fit(x,y) x_test = [[16,2],[18,0],[22,2],[32,2],[24,0]] y_test = [[1100],[850],[1500],[1800],[1100]] prices = model.predict(x_test) for i, price in enumerate(prices): print('Predicted:%s, Target:%s'%(price,y_test[i])) score = model.score(x_test,y_test) print("r-squared:",score)
ちなみにこちらのコードの内容は、 AI AcademyのKaggleでデータ分析ができるようになりたい>回帰分析とはという部分のものです。
対策
まずは既存のpythonにどのようなパッケージがインストールさ入れているかを確認します。
pip freeze
これによって、既にインストールされているパッケージ及びそのバージョンが表示されます。
今回の場合、僕のpython(Anacondaを利用してインストール)には既にscikit-learn0.20.2がインストールされていました。
これによって今回動かしたいコードにエラーが出てしまっていました。 (このバージョンには対応していないコードの書き方がされていたため)
対策として行ったことは、大きく2つ。
対策内容
・既存のscikit-learnをアンインストール
・新たにダウングレードしたscikit-learnをインストール
この2点を行いました。
まずは既存のscikit-learnをアンインストールします。
pip uninstall scikit-learn
本当にアンインストールする?と聞かれるので、y を選択。
無事にアンインストールされたら、次にダウンロードしたいバージョンのscikit-learnをダウンロードします。
pip install scikit-learn==0.19.2
これで無事解決しました〜!