pca = PCA(n_components=7) newX = pca.fit_transform(X) x_data = ['PC1','PC2','PC3','PC4','PC5','PC6','PC7'] y_data = np.around(pca.explained_variance_ratio_, 2) plt.bar(x=x_data, height=y_data,color='steelblue', alpha=0.8) plt.show() PCA_data = pd.DataFrame(newX, columns=['PC1', 'PC2', 'PC3', 'PC4', 'PC5', 'PC6', 'PC7']) correlation_matrix = PCA_data.corr() sns.heatmap(correlation_matrix, cmap='coolwarm', annot=True) plt.show() 上述代码是对数据进行主成分分析,展示每个主成分的贡献率, 并计算所有主成分之间的皮尔逊相关系数,并用热图Heatmap的形式展示出来,请在上述代码基础上,请给出下一步的代码,要求是: 划分训练集测试集,只使用前两个主成分作为自变量训练逻辑回归模型,并在测试集上测试模型预测效果。显示模型预测的准确率,显示模型的混淆矩阵,试着画出ROC曲线
时间: 2023-06-05 13:05:04 浏览: 103
下一步的代码如下:
# 划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(newX[:,:2], y, test_size=0.3, random_state=42)
# 训练逻辑回归模型
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
logreg.fit(X_train, y_train)
# 在测试集上测试模型预测效果
y_pred = logreg.predict(X_test)
# 显示模型预测的准确率
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print("模型预测准确率为:", accuracy)
# 显示模型的混淆矩阵
from sklearn.metrics import confusion_matrix
conf_mat = confusion_matrix(y_test, y_pred)
print("模型的混淆矩阵为:\n", conf_mat)
# 画ROC曲线
from sklearn.metrics import roc_curve, roc_auc_score
fpr, tpr, thresholds = roc_curve(y_test, y_pred)
roc_auc = roc_auc_score(y_test, y_pred)
plt.plot(fpr, tpr, label='ROC曲线 (AUC = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'r--')
plt.title('ROC曲线')
plt.xlabel('假正率(FPR)')
plt.ylabel('真正率(TPR)')
plt.legend(loc="lower right")
plt.show()
阅读全文