预期的二维数组,改为标量数组:array=11

数据挖掘 scikit-学习
2022-02-18 23:24:34
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.metrics import r2_score

# veri yukleme
veriler = pd.read_csv(r'C:\Users\k\Desktop\maaslar_yeni.csv')
# x burada bagımsız degısken y ise bagımlı degiskendir.
x = veriler.iloc[:,2:3]
y = veriler.iloc[:,5:]
X=x.values.reshape(-1,1)
Y=y.values.reshape(-1,1)


#linear regression
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X,Y)

import statsmodels.api as sm
model=sm.OLS(lin_reg.predict(X),X)
print(model.fit().summary())

在一个教程中,讲师只是更改了 x 并创建了新的 X,Y。然后他尝试使用如图所示的 LinearRegression 来学习 R 值。但是当我尝试这个时,我看到了上述错误。我该如何解决这个问题?

1个回答

您的代码存在潜在错误

x = veriler.iloc[:,2:3]
y = veriler.iloc[:,5:]
X=x.values.reshape(-1,1)
Y=y.values.reshape(-1,1)

如您所见,您的 x 有一列 (2:3),但您的 y 可能有不止一列(5:表示第 6 列到最后)。因此,当您进行reshape时,len(Y) 可能是 len(X) 的两倍(或更多)。

请张贴一些您的数据记录,以帮助您获得更多帮助;但通常,X 可以有多列,Y 可以有一列。但是,如果您要对 1 列 X 和 Y 进行回归,您的代码的可能修复如下(删除 : 为您的 y)

y = veriler.iloc[:,5]