逻辑回归对所有样本的预测都是1。

问题描述 投票:0回答:1

我试图用如下数据训练一个逻辑回归模型:分类变量:0或1数字变量。8到20之间的连续数

我有20个数值变量,我想每次只用一个数值变量来做预测模型,看哪个功能最好用。

我使用的代码是

for variable in numerical_variable:
    X = data[[variable ]]
    y = data[categorical_variable]

    X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.20,random_state=0)

    logreg = LogisticRegression()
    logreg.fit(X_train, y_train)

    y_pred=logreg.predict(X_test)
    print(y_pred)

    cnf_matrix = metrics.confusion_matrix(y_test, y_pred)

    print("Accuracy:", metrics.accuracy_score(y_test, y_pred))
    print("Precision:", metrics.precision_score(y_test, y_pred))
    print("Recall:", metrics.recall_score(y_test, y_pred))

分类变量偏向于1,大约有800个1和200个0。所以我想这就是为什么不管测试样本如何(如果我不设置random_state=0的话),也不管数值变量如何,它总是预测1的原因(使用python 3

有什么想法可以解决这个问题吗?

谅谅

python python-3.x scikit-learn logistic-regression prediction
1个回答
-2
投票

使用 joblib 库来保存您的模型。

import joblib
your_model = LogisticRegression()
your_model.fit(X_train, y_train)
filename = 'finalized_model.sav'
joblib.dump(your_model, filename)

这段代码将把你的模型保存为'finalized_model.sav',即使你不写,扩展名也无所谓。

然后你就可以通过这段代码调用你的精确模型和固定模型,一直进行相同的预测。

your_loaded_model = joblib.load('finalized_model.sav')

作为一个预测的例子。

your_loaded_model.predict(X_test)
© www.soinside.com 2019 - 2024. All rights reserved.