python-随机森林后筛选最重要变量,模型准确率、随机森林混淆矩阵结果

from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt


### 1、模型准确率



<------------随机森林模型运行结果-------------->

读取数据

df = pd.read_csv(‘C:\Users\31425\Desktop\新建文件夹\序列\蒿属1.csv’)

分离特征和目标变量

X = df.iloc[:, 1:-1]
y = df.iloc[:, -1]

将数据集分为训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

创建随机森林模型

rf = RandomForestClassifier(n_estimators=100, random_state=42)

在训练集上拟合模型

rf.fit(X_train, y_train)

在测试集上进行预测

y_pred = rf.predict(X_test)

计算模型准确率

accuracy = accuracy_score(y_test, y_pred)
print(“模型准确率:”, accuracy)


#### 1.1、对应输出


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5728875180a74d048403be4a5e83eb4d.png)


### 2.随机森林混淆矩阵结果



<------------------随机森林混淆矩阵结果----------------------->

# 读取数据

data = pd.read_csv(‘C:\Users\31425\Desktop\新建文件夹\序列\蒿属1.csv’)
labels = data[‘species’]
data = data.drop(‘species’, axis=1)

拆分数据集

train_data, test_data, train_labels, test_labels = train_test_split(data, labels, test_size=0.2, random_state=42)

创建随机森林分类器

rfc = RandomForestClassifier(n_estimators=100, random_state=42)

训练模型

rfc.fit(train_data, train_labels)

进行预测

predictions = rfc.predict(test_data)

计算混淆矩阵

cm = confusion_matrix(test_labels, predictions)
print(cm)


#### 2.1矩阵结果在这里插入图片描述


### 3、随机森林对影响蒺藜科花粉判别的自变量重要性基尼系数排序图



《--------------随机森林对影响蒺藜科花粉判别的自变量重要性基尼系数排序图-------------------》

读取数据

data = pd.read_csv(‘C:\Users\31425\Desktop\新建文件夹\序列\蒿属1.csv’)

将数据集分为自变量和因变量

X = data.drop(‘species’, axis=1)
y = data[‘species’]

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

<think>好的,用户想要了解如何使用Python编写一个随机森林的信用风险预测模型。首先,我需要回忆一下随机森林的基本概念和应用场景。随机森林是一种集成学习方法,通过多个决策树来提高预测准确性和稳定性,适合分类问题,比如信用风险评估通常是一个二分类问题(违约或不违约)。 接下来,用户可能需要代码的结构和步骤。首先,可能需要导入相关的库,比如pandas用于数据处理,sklearn中的RandomForestClassifier、train_test_split、metrics等模块。然后,数据预处理是关键步骤,包括加载数据、处理缺失值、特征编码(如类别变量转换为数值)、划分特征和目标变量等。 然后,数据需要分为训练集和测试集,这一步通常用train_test_split。接着是模型的训练,用RandomForestClassifier,可能需要调整一些超参数,比如n_estimators、max_depth等,但用户可能需要一个基础版本,所以先保持默认或简单设置。 模型训练后需要进行评估,常用的指标包括准确率、精确率、召回率、F1值、AUC等。同时,特征重要性分析也是随机森林的一个优点,可以展示出来帮助用户理解哪些特征影响大。 用户可能还关心如何优化模型,比如网格搜索调参,但可能在初步代码中不需要太复杂,所以可以放在可选部分。另外,如何处理类别不平衡的问题,比如使用class_weight参数或者过采样技术,这也是需要注意的地方,但用户如果没有提到,可能暂时先保持基础处理。 可能还需要考虑示例数据集的问题,用户可能没有现成的数据,所以使用sklearn的虚拟数据集或者建议用户加载自己的数据。这里可能用虚拟数据作为示例,方便用户直接运行代码。 最后,代码的结构要清晰,注释明确,步骤分段,方便用户理解。同时,需要提醒用户实际应用中需要注意数据预处理、参数调优、模型解释等问题,确保模型的可靠性。 现在把这些思路整理成代码步骤,确保每个部分都有注释,并解释关键点。可能还需要提到安装必要的库,比如pandas和sklearn,但假设用户已经具备环境,所以可能不需要特别说明。 检查是否有遗漏的步骤,比如特征缩放是否需要?随机森林通常不需要,因为基于树的模型对特征尺度不敏感,所以可以省略。编码部分,比如标签编码或独热编码,需要根据数据类型处理,示例中可能用虚拟数据,所以特征都是数值型,但实际数据可能需要处理类别变量。 最后,验证代码是否有语法错误,比如括号是否正确,缩进是否正确,特别是Python中缩进很重要。确保示例代码能够运行,并给出预期的输出结果,比如准确率等指标。</think>以下是用Python构建随机森林信用风险预测模型的完整代码及分步解析: ```python # 1. 导入必要库 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import (accuracy_score, classification_report, confusion_matrix, roc_auc_score) from sklearn.preprocessing import LabelEncoder # 2. 数据加载与预处理 # 假设数据包含以下特征:年龄、收入、职业、信用历史、负债率、违约记录(目标变量) # 替换为你的实际数据路径 # df = pd.read_csv('credit_data.csv') # 创建示例数据(实际使用时替换为真实数据) data = { '年龄': [25, 35, 45, 30, 40, 28, 50, 33], '收入(万)': [12, 25, 35, 18, 42, 15, 60, 22], '职业': ['教师', '工程师', '医生', '自由职业', '经理', '学生', '律师', '销售'], '信用历史(年)': [2, 5, 10, 3, 8, 1, 15, 4], '负债率': [0.3, 0.2, 0.1, 0.5, 0.15, 0.6, 0.05, 0.4], '是否违约': [1, 0, 0, 1, 0, 1, 0, 1] } df = pd.DataFrame(data) # 3. 特征工程 # 处理分类变量(职业) le = LabelEncoder() df['职业编码'] = le.fit_transform(df['职业']) # 定义特征和目标变量 features = ['年龄', '收入(万)', '信用历史(年)', '负债率', '职业编码'] X = df[features] y = df['是否违约'] # 4. 划分数据集 X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=42) # 5. 构建随机森林模型 rf_model = RandomForestClassifier( n_estimators=100, # 树的数量 max_depth=5, # 树的最大深度 random_state=42, class_weight='balanced' # 处理类别不平衡 ) # 6. 模型训练 rf_model.fit(X_train, y_train) # 7. 模型预测 y_pred = rf_model.predict(X_test) y_proba = rf_model.predict_proba(X_test)[:, 1] # 获取违约概率 # 8. 模型评估 print("准确率:", accuracy_score(y_test, y_pred)) print("AUC值:", roc_auc_score(y_test, y_proba)) print("\n分类报告:") print(classification_report(y_test, y_pred)) print("\n混淆矩阵:") print(confusion_matrix(y_test, y_pred)) # 9. 特征重要性分析 feature_importance = pd.Series(rf_model.feature_importances_, index=features) print("\n特征重要性排序:") print(feature_importance.sort_values(ascending=False)) # 10. 模型优化建议(可选) # 可使用GridSearchCV进行超参数调优 ``` 代码关键点解析: 1. **数据预处理**: - 使用`LabelEncoder`处理分类特征 - 明确特征列与目标列 - 处理类别不平衡问题(通过`class_weight='balanced'`) 2. **模型参数**: - `n_estimators=100`:使用100棵决策树 - `max_depth=5`:控制模型复杂度防止过拟合 - `random_state`:保证结果可复现 3. **评估指标**: - 准确率:整体预测正确率 - AUC值:衡量模型区分能力 - 分类报告:包含精确率、召回率、F1值 - 混淆矩阵:展示具体预测情况 4. **特征重要性**: - 输出各特征对预测的贡献度 - 可用于特征筛选和业务解释 实际应用注意事项: 1. 数据准备: - 需要足够的历史数据(建议至少1000+样本) - 处理缺失值(删除或填充) - 特征缩放(树模型不需要,但线性模型可能需要) 2. 特征工程: - 添加衍生特征(如:收入负债比) - 处理异常值 - 使用更复杂的编码方式(如One-Hot编码) 3. 模型调优: ```python from sklearn.model_selection import GridSearchCV param_grid = { 'n_estimators': [50, 100, 200], 'max_depth': [3, 5, 7], 'min_samples_split': [2, 5, 10] } grid_search = GridSearchCV(estimator=rf_model, param_grid=param_grid, cv=5) grid_search.fit(X_train, y_train) print("最佳参数:", grid_search.best_params_) ``` 4. 模型部署: - 使用pickle保存模型 ```python import pickle with open('credit_model.pkl', 'wb') as f: pickle.dump(rf_model, f) ``` 该模型可用于银行、金融机构的信用评分场景,通过客户特征预测违约概率。实际应用中需特别注意数据合规性和模型可解释性要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值