【问题标题】:How to make the Logistic Regression model work for other files to do prediction in Python?如何使逻辑回归模型适用于其他文件在 Python 中进行预测?
【发布时间】:2021-08-18 11:34:57
【问题描述】:

我为 train.csv 创建了一个逻辑回归模型,该模型使用其数据进行预测。如何使用相同的模型对 test.csv 进行预测?抱歉,我对 Python 很陌生。

这是最后几个命令的屏幕截图及其对 train.csv 的结果。当我想测试 test.csv 时,最后一句话出现以下错误: https://pasteboard.co/K4p4aZA.jpg

有关 test.csv、train.csv 和 anaconda 笔记本,您可以访问:https://drive.google.com/drive/u/1/folders/1U6TcJz8fp7FqbxpUcqRmAU-HSL42VN-S

import pandas as pd
import numpy as np

df_test=pd.read_csv("test.csv")
df_train=pd.read_csv("train.csv")

# many lines in between for details please read the notebook in google drive
# below is the last few sentence

from sklearn.linear_model import LogisticRegression

lr=LogisticRegression()

lr.fit(X_train,y_train)

#prediction
df_result=pd.DataFrame(y_train)
df_result['predicted']=lr.predict_proba(X_train)[:,1]

【问题讨论】:

  • 现在您的回归模型已准备就绪,您可以阅读 test.csv 并测试您的模型。否则,如果您想保存模型以供将来使用,您也可以这样做。 Pickle 库是一种流行的模型保存工具。
  • 抱歉,我不知道需要输入什么才能预测 test.csv。我需要重新定义 X 吗?

标签: python pandas logistic-regression


【解决方案1】:

我没有在谷歌驱动器中阅读您的实际代码,但通常您可以这样做。

import pandas as pd
import numpy as np

df_test=pd.read_csv("test.csv")
df_train=pd.read_csv("train.csv")

# I would assume df_test and df_train have exactly the same structure, as it should be.

# You would have some process to clean up your input data
# Abstracted into a function below
def fun(df: pd.DataFrame):
  # Do your cleaning and stuff
  return x, y

x_train, y_train = fun(df_train)


from sklearn.linear_model import LogisticRegression
lr=LogisticRegression()

lr.fit(x_train,y_train )

#prediction
df_result=pd.DataFrame(y_train)
df_result['predicted']=lr.predict_proba(x_train)[:,1]

# Now you can do exactly the same thing on your `df_test`
x_test, y_test = fun(df_test)
test_result = lr.predict_proba(x_test)[:,1]

我建议阅读sklearn.Pipeline,它构建了一个Pipeline 来处理预处理和实际建模。

【讨论】:

  • 对不起,我真的不明白,我是否也需要为 test.csv 做一个热编码?
  • @jonathanchui 基本上你对train.csv所做的一切都应该应用于你的test.csv
  • drive.google.com/file/d/1llyg2rl9TngASxDBMqJE_9jfjKESbBdG/... 抱歉,您能再看一下笔记本吗?我已经定义了 X_test 但现在它说我还没有定义
【解决方案2】:

https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

您需要从 scikit 文档中获取模型并进行预测

lr.predict(x_test) 

其中 x_test 具有相同的列。

Scikit 学习模型对几乎所有模型都具有相同的拟合和预测类别。

【讨论】:

猜你喜欢
  • 2018-01-14
  • 1970-01-01
  • 2014-07-29
  • 2022-10-23
  • 2018-08-18
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
相关资源
最近更新 更多