首页 > 解决方案 > 来自不同(测试)文件的一个代码数据与一个文件中的所有数据有何不同?

问题描述

我遇到的所有示例总是方便地将数据放在一个文件中,以显示 train_test_split 的工作原理(或任何模型)。但很多时候,训练数据和测试数据是两个独立的文件。所以,我制作了一个超基本的逻辑回归训练文件和测试文件,由两列组成,“年龄”,“保险”。并命名df的df_train,df_test。

我意识到 df_test 没有接受过培训,因此出现了错误,但是……这不是重点吗?我知道model.predict(X_test)不会抛出错误,但这是基于训练数据而不是测试数据。

警告的话,当你老了,尝试学习新事物时,就会发生这种情况。不要变老。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(df[['age']],df.insurance,test_size=0.1)
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
model.predict(df_test)

谢谢,

老屁

标签: pythonsklearn-pandas

解决方案


正如你所说:

训练文件和测试文件由两列组成,“年龄”、“保险”。

因此,如果测试文件同时包含年龄和保险列并按原样使用,则由于训练和预测之间的输入不匹配,预测功能将不起作用。model.predict 也只期望自变量(在你的情况下是它的年龄),格式如下:

预测(自我,X)[来源]¶

Predict class labels for samples in X.
Parameters: 

X : array_like or sparse matrix, shape (n_samples, n_features)

    Samples.

现在进行修改:

model.predict(df_test["age"].values)

编辑:试试这个:

from sklearn.model_selection import train_test_split
X = df["age"].values
y = df["insurance"].values
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.1)
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
model.predict([list(df_test["age"].values)])

推荐阅读