让我们来看看数据:
import numpy as np
from sklearn.linear_model import LogisticRegression
x=np.linspace(0,2*np.pi,80)
x = x.reshape(-1,1)
y = np.sin(x)+np.random.normal(0,0.4,80)
y[y<1/2] = 0
y[y>1/2] = 1
clf=LogisticRegression(solver="saga", max_iter = 1000)
字符串
我想拟合逻辑回归,其中y是因变量,x是自变量。但是当我使用:
clf.fit(x,y)
型
我看到错误
'y should be a 1d array, got an array of shape (80, 80) instead'.
型
我试图通过使用
y=y.reshape(-1,1)
型
但我最终得到了长度为6400的数组!(为什么?)
你能给予我一个帮助与执行此回归?
3条答案
按热度按时间yc0p9oo01#
更改操作顺序:
首先生成 x 和 y 作为1-D数组:
字符串
然后(在生成 y 之后)重塑 x:
型
评论后编辑截至2022-02-20
原始代码中问题的根源在于;
x = np.linspace(0,2*np.pi,80)
-生成一维数组。x = x.reshape(-1,1)
-将其重新整形为2-D数组,具有一列和所需的行。y = np.sin(x) + np.random.normal(0,0.4,80)
-在列数组和一维数组(这里作为单行数组处理)上操作。正确的解决方案是,x 和 y 最初都应该是1-D(单行)数组,我的代码就是这样做的。
plupiseo2#
我遇到了这个错误,并通过重塑解决它,但它没有工作
字符串
实际上,这是由于np.argmax周围的[]括号的错误位置而发生的,下面是错误的代码和正确的代码,请注意两个代码段中np.argmax周围的[]位置
错误代码
型
正确代码
型
jjhzyzn03#
'y应该是一个一维数组,得到了一个形状为(80,80)的数组'。
下面的错误解决方案
从sklearn.model_selection导入train_test_split X_train,X_test,y_train,y_test=train_test_split(X,y,test_size= 0.2,random_state =2)
训练_测试_分裂方法的一种以上保持在一个正确的方式