Scikit learn sklearn train_test_split-ValueError:找到样本数不一致的输入变量:[2552,1]/线性回归

Scikit learn sklearn train_test_split-ValueError:找到样本数不一致的输入变量:[2552,1]/线性回归,scikit-learn,Scikit Learn,我需要帮助重塑我的输入以匹配我的输出 我想创建一个模型,对“所有信息”信息进行矢量化和分类,以便将标签“Fall”分为0和1。 但是,我不断得到[ValueError:Found输入变量的样本数不一致:[2552,1]]错误。 “形状”看起来不错,但我不知道如何修复它 ## Linear Regression import pandas as pd import numpy as np from tqdm import tqdm #instance->fit->predict f

我需要帮助重塑我的输入以匹配我的输出

我想创建一个模型,对“所有信息”信息进行矢量化和分类,以便将标签“Fall”分为0和1。 但是,我不断得到[ValueError:Found输入变量的样本数不一致:[2552,1]]错误。 “形状”看起来不错,但我不知道如何修复它

## Linear Regression

import pandas as pd
import numpy as np
from tqdm import tqdm
#instance->fit->predict

from sklearn.linear_model import LinearRegression

model=LinearRegression(fit_intercept=True)

data=pd.read_csv("Fall_test_0826.csv", encoding='cp949', header=0)
data.head(2)


X=data.drop(["fall"], axis=1)

y= data.fall


from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state = 0) 


from sklearn.feature_extraction.text import TfidfVectorizer

tfidf_vect=TfidfVectorizer()
tfidf_vect.fit(X_train)#단어사전 만듬

X_train_tfidf_vect = tfidf_vect.fit_transform(X_train['All information']).toarray()
X_test_tfidf_vect = tfidf_vect.transform(X_test)

lr_clf=LinearRegression()
lr_clf.fit(X_train_tfidf_vect, y_train)
pred = lr_clf.predict(X_test_tfidf_vect)


from sklearn.metrics import accuracy_score

print('Logisitic Regression _ {0:.3f}'.format(accuracy_score(y_test, pred)))
错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-85-bec6ead862c8> in <module>
----> 1 print('{0:.3f}'.format(accuracy_score(y_test, pred)))

~\anaconda3\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs)
     71                           FutureWarning)
     72         kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 73         return f(**kwargs)
     74     return inner_f
     75 

~\anaconda3\lib\site-packages\sklearn\metrics\_classification.py in accuracy_score(y_true, y_pred, normalize, sample_weight)
    185 
    186     # Compute accuracy for each possible representation
--> 187     y_type, y_true, y_pred = _check_targets(y_true, y_pred)
    188     check_consistent_length(y_true, y_pred, sample_weight)
    189     if y_type.startswith('multilabel'):

~\anaconda3\lib\site-packages\sklearn\metrics\_classification.py in _check_targets(y_true, y_pred)
     79     y_pred : array or indicator matrix
     80     """
---> 81     check_consistent_length(y_true, y_pred)
     82     type_true = type_of_target(y_true)
     83     type_pred = type_of_target(y_pred)

~\anaconda3\lib\site-packages\sklearn\utils\validation.py in check_consistent_length(*arrays)
    254     uniques = np.unique(lengths)
    255     if len(uniques) > 1:
--> 256         raise ValueError("Found input variables with inconsistent numbers of"
    257                          " samples: %r" % [int(l) for l in lengths])
    258 

ValueError: Found input variables with inconsistent numbers of samples: [2552, 1]
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
---->1个打印(“{0:.3f}.”格式(准确度评分(y检验,pred)))
内部文件中的~\anaconda3\lib\site packages\sklearn\utils\validation.py(*args,**kwargs)
71未来警告)
72 kwargs.update({k:arg代表k,arg在zip中(sig.parameters,args)})
--->73返回f(**kwargs)
74返回内部\u f
75
~\anaconda3\lib\site packages\sklearn\metrics\\u classification.py的准确度评分(y\u true,y\u pred,normalize,sample\u weight)
185
186#计算每个可能表示的精度
-->187 y_type,y_true,y_pred=_check_targets(y_true,y_pred)
188检查长度是否一致(y正确、y预测、样品重量)
189如果y_type.startswith('multilabel'):
~\anaconda3\lib\site packages\sklearn\metrics\\u classification.py in\u check\u targets(y\u true,y\u pred)
79 y_pred:阵列或指示符矩阵
80     """
--->81检查长度是否一致(y_true,y_pred)
82 type_true=_目标的类型(y_true)
83类型_pred=类型_目标(y_pred)
检查长度(*数组)中的~\anaconda3\lib\site packages\sklearn\utils\validation.py
254唯一性=np.唯一性(长度)
255如果len(uniques)>1:
-->256 raise VALUERROR(“找到的输入变量的数量不一致”)
257“样本:%r”%[int(l)表示长度为l的样本])
258
ValueError:找到样本数不一致的输入变量:[2552,1]


我认为您必须更改代码中的行

X_test_tfidf_vect = tfidf_vect.transform(X_test)

但你的方法是错误的。你正在使用线性回归,但试图使用分类指标(准确度评分)()

这样做会导致错误
ValueError:分类指标无法处理二进制和连续目标的混合

这是行不通的,因为数组
pred
将保存浮点值,例如0.5,但对于精度分数,您需要类标签作为整数,例如0、1、2或3等

您需要使用回归度量来评估线性回归


查看可用的回归指标。

旁注:此处只需要一个
fit
tfidf\u向量fit\u变换(X\u train['All information'])。toarray()
,不是
fit_transform
你能分享输入数据帧/数组的形状吗?你能编辑你的问题以显示你正在使用的csv或y_test和pred的形状吗?@yatu是的,我插入了一个图像。你能检查一下吗?@DiegoRueda当然。我插入了一个与你的建议相关的图像
X_test_tfidf_vect = tfidf_vect.transform(X_test['All information'])