import pandas as pd from sklearn.cluster import DBSCAN from sklearn.metrics import confusion_matrix import seaborn as sns import matplotlib.pyplot as plt # 读取Excel数据 data = pd.read_excel('C:/Users/86178/Desktop/test/test/TF-IDF/SSG hole span版.xlsx') # 提取特征列 feature_columns = ["Bridge length (m)","Pier type","Foundation type","Hole","Span (m)", "Bearing type","Plane linear"] X = data[feature_columns] # 使用DBSCAN进行聚类 dbscan = DBSCAN(eps=0.5, min_samples=5) dbscan.fit(X) # 获取聚类结果 labels = dbscan.labels_ # 获取实际类别(如果有的话) actual_labels = data['Vulnerability grade'] # 计算混淆矩阵 confusion_mat = confusion_matrix(actual_labels, labels) # 绘制热力图 sns.heatmap(confusion_mat, annot=True, cmap="YlGnBu") plt.xlabel('Predicted Labels') plt.ylabel('Actual Labels') plt.title('Confusion Matrix') plt.show()
时间: 2024-04-10 14:31:04 浏览: 132
这段代码使用了 pandas、sklearn 和 seaborn 库来进行数据聚类和绘制混淆矩阵的热力图。
在代码中,你需要确保以下几点:
1. 你已经安装了 pandas、sklearn 和 seaborn 库,并正确导入了所需的模块。
2. Excel 数据文件的路径和名称正确,并且包含了所需的数据列。
3. 你已经定义了特征列名字的列表 `feature_columns`。
4. 你已经定义了 DBSCAN 算法的参数,如 `eps` 和 `min_samples`。
5. 实际的类别标签存储在数据集的某一列中,通过 `data['Vulnerability grade']` 来访问。
如果以上条件满足,你可以运行这段代码来进行聚类和绘制混淆矩阵的热力图。热力图将显示预测标签和实际标签之间的混淆矩阵。
注意:确保已经正确安装并配置了 matplotlib 库,以便在图表中显示标题和标签。
阅读全文