python实现随机森林(RF)

代码如下:

#coding:utf-8


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
from sklearn.preprocessing import LabelEncoder


df_wine_y = pd.read_excel(".//ERα_activity.xlsx", header=None)

y = df_wine_y.iloc[1:, 2:]
labelencoder_X = LabelEncoder()
# 对 X 中的标签数据编码
y = labelencoder_X.fit_transform(y)
y = pd.DataFrame(y)
y.index=y.index+1
print("y值数据:", y)
#df_wine.columns = []

# print(df_wine['Class label'])
# print('Class labels', np.unique(df_wine['Class label']))
# print(df_wine.head())

df_wine_x = pd.read_excel(".//Molecular_Descriptor.xlsx", header=None)
print(df_wine_x)

x = df_wine_x.iloc[1:, 1:].values.astype('float')
print("自变量数据:", x)

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)

feat_labels = df_wine_x.columns[1:]
print("自变量label:", feat_labels)
# n_estimators:森林中树的数量
# n_jobs  整数 可选(默认=1) 适合和预测并行运行的作业数,如果为-1,则将作业数设置为核心数
forest = RandomForestClassifier(n_estimators=20, random_state=0, n_jobs=-1)
forest.fit(x_train, y_train)

# 下面对训练好的随机森林,完成重要性评估
# feature_importances_  可以调取关于特征重要程度
importances = forest.feature_importances_
print("重要性:", importances)
x_columns = df_wine_x.columns[1:]
print(x_columns)
indices = np.argsort(importances)[::-1]
for f in range(x_train.shape[1]):
    # 对于最后需要逆序排序,我认为是做了类似决策树回溯的取值,从叶子收敛
    # 到根,根部重要程度高于叶子。
    print("%2d) %-*s %f" % (f + 1, 30, feat_labels[indices[f]], importances[indices[f]]))

# 筛选变量(选择重要性比较高的变量)
threshold = 0.15
x_selected = x_train[:, importances > threshold]

# 可视化
import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plt.title("分子描述符对生物活性影响的重要性排序", fontsize=18)
plt.ylabel("import level", fontsize=15, rotation=90)
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams['axes.unicode_minus'] = False
for i in range(x_columns.shape[0]):
    plt.bar(i, importances[indices[i]], color='orange', align='center')
    plt.xticks(np.arange(x_columns.shape[0]), x_columns, rotation=90, fontsize=15)
plt.show()
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 你好,我是 C 知道,关于用 Python 实现随机森林的问题,我可以回答。随机森林是一种集成学习算法,它通过随机选择特征和样本,构建多个决策树,再将它们组合成一个更加稳定和准确的模型。在 Python 中,可以使用 scikit-learn 库来实现随机森林算法。具体实现方法可以参考该库的文档和示例代码。 ### 回答2: 随机森林是一种集成学习方法,它是由多个决策树构成的分类器或回归器。通过对训练样本随机采样和特征随机选择,随机森林可以降低过拟合风险,提高泛化能力。 在Python中,我们可以使用scikit-learn库来实现随机森林算法。 首先,我们需要导入必要的库和模块: ```python from sklearn.ensemble import RandomForestClassifier # 导入随机森林分类器 from sklearn.model_selection import train_test_split # 导入数据划分函数 from sklearn.datasets import load_iris # 导入鸢尾花数据集 ``` 接下来,我们加载示例数据集鸢尾花数据集,并将其划分为训练集和测试集: ```python iris = load_iris() X, y = iris.data, iris.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) ``` 然后,我们创建一个随机森林分类器对象并进行训练: ```python rf = RandomForestClassifier(n_estimators=100) # 创建一个由100个决策树组成的随机森林分类器 rf.fit(X_train, y_train) # 使用训练集进行训练 ``` 训练完成后,我们可以使用测试集来评估模型的性能: ```python accuracy = rf.score(X_test, y_test) # 使用测试集计算预测准确率 print("Accuracy:", accuracy) ``` 此外,我们还可以使用训练好的随机森林模型进行预测: ```python y_pred = rf.predict(X_test) # 使用测试集进行预测 print("Predictions:", y_pred) ``` 以上就是用Python实现随机森林算法的基本步骤。通过不断优化参数和调整模型,我们可以得到更好的分类性能和预测结果。 ### 回答3: 随机森林是一种集成学习算法,它可以用于分类和回归问题。在Python中,可以利用sklearn库来实现随机森林。 首先,我们需要导入所需的库: ```python from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import make_classification ``` 接下来,我们可以使用make_classification函数生成一个随机的分类数据集: ```python X, y = make_classification(n_samples=100, n_features=4, n_informative=2, n_redundant=0, random_state=0, shuffle=False) ``` 这里我们生成了100个样本和4个特征。 然后,创建一个随机森林分类器对象: ```python clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0) ``` 可以设置随机森林的参数,如n_estimators表示树的数量,max_depth表示每棵树的最大深度等。 接下来,使用生成的数据来训练随机森林分类器: ```python clf.fit(X, y) ``` 训练完成后,可以使用训练好的模型来进行预测: ```python print(clf.predict([[0, 0, 0, 0]])) ``` 这里我们输入一个新的样本[0, 0, 0, 0],预测它的分类结果。 最后,可以通过以下方式查看每个特征的重要性: ```python print(clf.feature_importances_) ``` 这个值表示每个特征的重要性程度。 总结一下,我们可以使用sklearn库中的RandomForestClassifier类来实现随机森林算法。首先生成一个分类数据集,然后创建一个随机森林分类器对象并设置参数,接着用生成的数据进行训练,最后可以使用训练好的模型进行预测和查看特征重要性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四面楚歌吾独唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值