机器学习每周挑战——水质检测
·
这是一篇关于机器学习算法的文章,数据来自于kaggle社区,算法用到了随机森林。
这是数据的截图

实现方法
1.导入所需要的库
# 导入数据处理所需要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import font_manager
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn.metrics import confusion_matrix,roc_curve,roc_auc_score
from sklearn.metrics import classification_report,r2_score
from sklearn.ensemble import RandomForestClassifier
train_test_split函数用于将数据集划分为训练集和测试集,以便在机器学习任务中进行模型的训练和评估。它接受输入数据和标签,并返回划分后的训练集和测试集。 cross_val_score函数用于执行交叉验证,评估模型的性能。它接受一个分类器对象、输入数据和标签,并返回每次交叉验证的得分列表。
2.导入数据
df = pd.read_csv("waterQuality1.csv")
df_no_duplicates = df.drop_duplicates(inplace=True)
df['is_safe'] = pd.to_numeric(df['is_safe'],errors='coerce')
df = df.dropna()
3.用随机森林模型进行拟合
model = RandomForestClassifier(random_state=42)
model.fit(X_train,y_train)
4.模型建立后,我们用交叉验证来验证随机森林的可用性
cv_scorec = cross_val_score(model,X_train,y_train,cv = 5,scoring='accuracy') #cv 表示交叉验证几次
print("交叉验证准确度",cv_scorec)
print("平均准确度",cv_scorec.mean())
5.验证后发现随机森林非常契合,我们来评估一下这个模型,这里可以使用ROC曲线,AUC值等,混淆矩阵也可以,我这里以混淆矩阵为例
conf_matrix = confusion_matrix(y_test,y_pred)
plt.figure(figsize=(8,6))
sns.heatmap(conf_matrix,annot = True,fmt = 'd',cmap = 'Blues',cbar = False)
plt.title('混淆矩阵')
plt.xlabel('预测标签')
plt.ylabel('真实标签')
plt.show() # 显示图表
6.特征重要性分析
feature_importance = model.feature_importances_
我们通过feature_importances_来获取代码
7. 通过条形图来显示出来
for index ,value in enumerate(feature_importance_df['Importance']):
plt.text(value,index,f'{value:.4f}',ha = 'left' ,va = 'center')
plt.title('特征重要性')
plt.show()
完整代码的效果图



有想要数据集和完整代码的请私信我,(数据来源:kaggle社区)
更多推荐
所有评论(0)