我试图用如下数据训练一个逻辑回归模型:分类变量: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
有什么想法可以解决这个问题吗?
谅谅
使用 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)