机器学习实战目录
第一章 python训练线性模型实战
第二章 python训练决策树模型实战
第三章 python训练神经网络模型实战
第四章 python训练支持向量机模型实战
第五章 python训练贝叶斯分类器模型实战
第六章 python训练集成学习模型实战
第七章 python训练聚类模型实战
第八章 python训练KNN模型实战
第九章 python训练CNN模型实战
第十章 python训练RNN模型实战
......(会一直更新)
第六章 python训练集成学习模型实战
目录
训练一个集成学习模型的步骤如下:
1. 下载数据集
可以在 UCI ML Repository、Kaggle 等网站中下载各种类型的数据集。以使用的鸢尾花数据集为例,具体步骤如下:
- 前往 UCI ML Repository 网站 (https://archive.ics.uci.edu/ml/index.php)。
- 在搜索栏中输入 iris,找到 Iris Data Set 数据集并点击下载链接 iris.data。
- 将下载后的 iris.data 文件放入项目文件夹下。
2. 读取数据集
使用 pandas 库中的 read_csv() 函数读取 iris 数据集,并做必要的处理。
``` python
import pandas as pd
colnames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
iris = pd.read_csv('iris.data', names=colnames)
iris.head()
```
3. 准备训练数据
将 iris 数据集提取特征和标签数据。
``` python
X = iris.drop('class', axis=1)
y = iris['class']
```
4. 数据预处理
处理类别特征。对于这个数据集,只有一个类别特征,即花的种类。需要将类别特征转换为数字,我们可以使用 LabelEncoder 类来实现该过程。
``` python
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y = le.fit_transform(y)
```
5. 划分训练集和测试集
使用 sklearn 库中的 train_test_split() 函数将数据集划分为训练集和测试集,以便评估模型的性能。
``` python
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
```
6. 定义多个分类器模型
我们可以选择使用不同的分类器来组成一个集成学习模型。在这里我们选择了 Random Forest 和 KNN 两种分类器,并定义了一个 Voting Classifier 投票分类器模型。
``` python
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import VotingClassifier
clf1 = RandomForestClassifier(n_estimators=50, random_state=1)
clf2 = KNeighborsClassifier(n_neighbors=5)
eclf = VotingClassifier(estimators=[('rf', clf1), ('knn', clf2)], voting='hard')
```
7. 训练模型
在训练集上使用模型的 fit() 函数进行训练。
``` python
eclf.fit(X_train, y_train)
```
8. 测试模型
在测试集上使用 predict() 函数获得模型预测结果,并使用 accuracy_score() 函数计算模型的准确率。
``` python
from sklearn.metrics import accuracy_score
y_pred = eclf.predict(X_test)
accuracy_score(y_test, y_pred)
```
完整代码如下:
``` python
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import VotingClassifier
from sklearn.metrics import accuracy_score
# 读取数据集
colnames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
iris = pd.read_csv('iris.data', names=colnames)
# 准备训练数据
X = iris.drop('class', axis=1)
y = iris['class']
# 处理类别特征
le = LabelEncoder()
y = le.fit_transform(y)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# 定义多个分类器模型
clf1 = RandomForestClassifier(n_estimators=50, random_state=1)
clf2 = KNeighborsClassifier(n_neighbors=5)
eclf = VotingClassifier(estimators=[('rf', clf1), ('knn', clf2)], voting='hard')
# 训练模型
eclf.fit(X_train, y_train)
# 测试模型
y_pred = eclf.predict(X_test)
accuracy_score(y_test, y_pred)
```
参考资料:
- (https://zhuanlan.zhihu.com/p/184673895)
大家觉得有帮助的话还请大家给个收藏关注鼓励一下,有什么问题评论区留言,看到会恢复哒~