逻辑回归预测所有样本均为1

时间:2020-06-03 14:57:50

标签: python python-3.x scikit-learn logistic-regression prediction

我正在尝试使用以下数据训练逻辑回归模型: 分类变量: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 1s至200 0s。因此,我认为这就是为什么不管测试样本(如果我未设置random_state = 0)还是不管数值变量如何,总能预测一个的原因。 (使用python 3)

关于如何解决此问题的任何想法?

谢谢

1 个答案:

答案 0 :(得分:-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)