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 10:05:18 浏览: 157
主成分分析源代码(PCA)
4星 · 用户满意度95%
# 划分训练集测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
PCA_data.iloc[:, :6], y, test_size=0.3, random_state=42)
# 使用前六个主成分作为自变量训练逻辑回归模型
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression(random_state=42).fit(X_train, y_train)
# 显示模型预测的准确率
print('Accuracy:', clf.score(X_test, y_test))
# 显示模型的混淆矩阵
from sklearn.metrics import confusion_matrix
y_pred = clf.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
print('Confusion Matrix:\n', cm)
# 画ROC曲线
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt
fpr, tpr, thresholds = roc_curve(y_test, clf.predict_proba(X_test)[:,1])
plt.plot(fpr, tpr)
plt.plot([0, 1], [0, 1], linestyle='--', color='k')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()
阅读全文