我在 scikit-learn 中建立了一个逻辑回归,我所有的预测值都是 0,不可能是这样。它必须至少具有一定的预测能力。
我试图预测哪些航班可能会延误。在我的探索性数据分析中,我发现一些起源比其他起源造成更多问题,一些航空公司也往往比其他航空公司晚。因此,我使用始发地和报告航空公司作为我的自变量和迟到(是或否)作为我的因变量。我尝试了 Python 和 R 并且都产生了相同的结果。
数据:
由于我不能包含数据文件,我会尽力解释数据。数据只有三列: Reporting_Airline(有 HJ、AK、CF 等条目) Origin(也有 HYS、JSI、SHS 等数据。它们是机场名称。目的地也像有三个字母的 YSU ,HSU,JSA等。还有第四列,它是'late',是0或1。有159k个条目。我已经将Char类型的因变量转换为Python中的虚拟变量和因子在 R。
代码:
这是我在 R 中的代码:
Rdata2$Reporting_Airline <- as.factor(Rdata2$Reporting_Airline)
Rdata2$Dest <- as.factor(Rdata2$Dest)
Rdata2$late <- as.factor(Rdata2$late)
Rdata2$Origin <- as.factor(Rdata2$Origin
logistic <- glm(late ~ Origin+ Reporting_Airline, data=Rdata2,
family="binomial")
res2 = predict(logistic,Rdata2, type = "response")
res2
这是显示模型执行情况的混淆矩阵:
实际值 | 预测值 | |
---|---|---|
错误的 | 真的 | |
0 | 139191 | 8 |
1 | 30576 | 11 |
Python代码:
log_reg = LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, l1_ratio=None, max_iter=4000,
multi_class='auto', n_jobs=None, penalty='l2',
random_state=10, solver='lbfgs', tol=0.0001, verbose=0,
warm_start=False)
import numpy as np
log_reg
data4 = data3[['Origin', 'Dest', 'Reporting_Airline','late']]
dummies = pd.get_dummies(data4)
dummies.head
X_train, X_test, y_train, y_test = train_test_split(dummies.drop('late', axis=1),dummies.late,test_size=0.1)
log_reg.fit(X_train, y_train)
log_reg.predict(y_train)
y_pred = log_reg.predict(y_train)
它使一切都归零...