我正在尝试使用以下数据训练逻辑回归模型: 分类变量: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)
关于如何解决此问题的任何想法?
谢谢
答案 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)