【Python】sklearnのmodelでfitを実行するときに発生するエラーの解決方法

modelをfitするときに発生するvalueerrorの解決方法

こんにちは、にわこまです。

今回紹介するのは、sklearnのmodelでfitを実行するときに発生するエラー「ValueError: Expected 2D array, got 1D array instead」の解決方法について紹介します。

 

 

誤字脱字や分からない点がございましたらご連絡お願いいたします。

 

 

スポンサードサーチ


ValueError: Expected 2D array, got 1D array instead

配列の形を(-1, 1)に変換する

つまり以下のような形にする。

[[1],
 [2],
 [3],
 [4],
 [5],
 [6],
 [7],
 [8]]

  

 

エラー状況

LinearRegressionでfitを行おうと考え、以下のコードを実行しました。

import pandas as pd
from sklearn.linear_model import LinearRegression

df = pd.DataFrame({"year":[2000, 2001, 2002, 20003], 
                   "total":[200, 300, 450, 600]})

model = LinearRegression()
model.fit(df["year"], df["total"])

 

dfの中身を以下に示します。

今回使用したデータ

 

実行した結果以下のようなエラーが発生しました。

ValueError: Expected 2D array, got 1D array instead:
Reshape your data either using array.reshape(-1, 1) 
if your data has a single feature or array.reshape(1, -1) 
if it contains a single sample.

 

このエラーは簡単に言うと「形が違います。形を変えてください。」というエラーです。

そのため、入力したデータの形を変えることでエラーを解決することができます。

 

 

解決方法

fitに入力するデータを以下のように書き替えたらエラーを解決できます。

import pandas as pd
from sklearn.linear_model import LinearRegression

df = pd.DataFrame({"year":[2000, 2001, 2002, 20003], 
                   "total":[200, 300, 450, 600]})

model = LinearRegression()
model.fit(df[["year"]], df["total"])

 

つまり、以下のような形にすることでエラーを解決することができます。

x = [[2020],
     [2021],
     [2022],
     [2023]]
y = [200, 300, 450, 600]
model.fit(x, y)

 

 

まとめ

まとめの画像

今回は、sklearnのmodelでfitを実行するときに発生する「ValueError: Expected 2D array, got 1D array instead: Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.」というエラーの解決方法を紹介しました。

 

 

最後までお読みいただきありがとうございます。


スポンサードサーチ