### 使用Python的逻辑回归模型具有良好的准确性和精确度,但预测结果偏差很大

我构建了一个逻辑回归模型来预测贷款接受者。数据集中94%为非接受者,6%为接受者。我运行了几个逻辑回归模型:一个使用原始数据集,一个在上采样到50/50并移除了一些预测变量后进行的,还有一个没有上采样但移除了一些预测变量的模型。

模型1:在25个特征列上,准确率、精确度和召回率都超过了90%。运行模型后,我将预测结果输出到另一个CSV文件(虽然是同一批人,但不是原来的CSV文件),结果返回了10,000个接受者。我猜测这可能是由于过拟合引起的?不太确定,于是我在相同的94%非接受者和6%接受者的数据集上尝试,但减少了变量(19个特征列)。这次准确率为81%,但精确度只有21%,而召回率为765(对于训练和测试集)。这次只返回了8个接受者(共18,000个)。

最后,我尝试了上采样,将数据集上采样到平衡状态。准确率只有68%(我可以接受),训练和测试的精确度和召回率都是66%。运行模型后,将预测结果输出到CSV文件(同样是同一批人,但不同的CSV文件,不确定这是否会造成问题),这次返回了0个接受者。

有没有人能提供一些建议,解释这是什么原因造成的,以及我该如何解决这个问题?

我不确定哪个回归代码会最有帮助。如果上采样代码会更有帮助,我很乐意分享。

import statsmodels.api as sm
y=df.OpenedLCInd.values
X=df.drop('OpenedLCInd', axis = 1)
cols=X.columns
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
minmax= MinMaxScaler()
X=pd.DataFrame(minmax.fit_transform(X))
X.columns = cols
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_score, recall_score, accuracy_score, f1_score, roc_curve, auc, confusion_matrix
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .25, random_state= 33)
logreg=LogisticRegression(fit_intercept = False, C=1e12, solver ='liblinear', class_weight='balanced')
logreg.fit(X_train, y_train)
y_hat_train = logreg.predict(X_train)
y_hat_test = logreg.predict(X_test)
residuals = np.abs(y_train - y_hat_train)
logit_model=sm.Logit(y_train,X_train)
result=logit_model.fit()
print(result.summary())
print(pd.Series(residuals).value_counts())
print(pd.Series(residuals).value_counts(normalize=True))
## Output predictions to new dataset
test=pd.read_csv(r'link')
predictions = logreg.predict(X_test)
test_predictions = logreg.predict(test.drop('OpenedLCInd', axis = 1))                               
test["predictions"] = test_predictions
test.to_csv(r'output link')

回答:

您没有使用验证集(上面的代码中是测试集)。要修复它,请使用residuals = np.abs(y_test - y_hat_test)来代替y_train

此外,应用交叉验证以确保模型始终表现良好也是有用的。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注