对于我的论文,我正在尝试建立一个通过logit模型正确预测我的样本的模型。首先,我遇到了python没有logit模型,而只有logistic模型的问题。但是使用这种逻辑模型,我在[logreg.fit(X_train,y_train)]
下面的代码中遇到了错误。
我的错误如下:该求解器需要数据中至少2个类的样本。好吧,我的数据仅包含1,并且不包含零。因此,从某种意义上说,这种错误是正确的。有没有一种解决该错误的方法,这样我就可以继续进行分析,而不必寻找各种数据也都为零的情况,由于数据库的复杂性,这将非常耗时。
我已经尝试修复它,但是找不到解决此问题的任何方法。删除提供错误的行也不是一种选择,因为这在代码中进一步造成了许多新问题。
feature_cols =['RSIZE','EXRETAVG','NIMTAAVG','TLMTA','CASHMTA','SIGMA','PRICE','MB']
X = df[feature_cols]
y = df.Bankrupt
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)
logreg = LogisticRegression()
logreg.fit(X_train,y_train)
y_pred=logreg.predict(X_test)
cnf_matrix = metrics.confusion_matrix(y_test, y_pred)
print(cnf_matrix)
class_names=[0,1] # name of classes
fig, ax = plt.subplots()
tick_marks = np.arange(len(class_names))
plt.xticks(tick_marks, class_names)
plt.yticks(tick_marks, class_names)
sns.heatmap(pd.DataFrame(cnf_matrix), annot=True, cmap="YlGnBu" ,fmt='g')
ax.xaxis.set_label_position("top")
plt.tight_layout()
plt.title('Confusion matrix', y=1.1)
plt.ylabel('Actual label')
plt.xlabel('Predicted label')
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))
y_pred_proba = logreg.predict_proba(X_test)[::,1]
fpr, tpr, _ = metrics.roc_curve(y_test, y_pred_proba)
auc = metrics.roc_auc_score(y_test, y_pred_proba)
plt.plot(fpr,tpr,label="data 1, auc="+str(auc))
plt.legend(loc=4)
plt.show()
答案 0 :(得分:0)
简短的答案是您总是需要一个以上的课程。
任何模型所做的就是尝试确定每个变量(功能,您的X)如何影响因变量(Y,您的类别)的结果。现在,如果您的因变量中只有一个类别,那么无论您的X具有什么值和值的组合,您总会得到相同的结果。
这意味着,如果仅在一个类(您的类)上训练模型,则在测试时它将始终返回1(并且您基本上不需要训练和测试任何东西)。
一个玩具示例可能是:function controlRadiobox( el, type ) {
var svg = createSVGEl();
el.parentNode.appendChild( svg );
if (el.checked) {
draw(el, type);
}
el.addEventListener( 'change', function() {
resetRadio( el );
draw( el, type );
} );
}
是如果观察结果在一年内违约。 Y
通过某种模型计算出的纯违约概率。
然后让我们说,如果模型X
预测Y=1
(一年内默认),您会很高兴。
然后,仅对X>0.5
的情况进行二次抽样并训练模型。无论Y=1
取什么值,您都会得到一条简单的扁平线(Y=1
)。
这意味着在测试模型时,无论X
的值是多少,因变量的实际结果是什么,您都将始终估计X
。