一、简介
Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一.
Sklearn 包含了很多种机器学习的方式:
- Classification 分类
- Regression 回归
- Clustering 非监督分类
- Dimensionality reduction 数据降维
- Model Selection 模型选择
- Preprocessing 数据预处理
从 START 开始,首先看数据的样本是否 >50
,小于则需要收集更多的数据。
由图中,可以看到算法有四类,分类,回归,聚类,降维。
其中 分类和回归是监督式学习,即每个数据对应一个 label。
聚类 是非监督式学习,即没有 label。
另外一类是 降维,当数据集有很多很多属性的时候,可以通过 降维 算法把属性归纳起来。例如 20 个属性只变成 2 个,注意,这不是挑出 2 个,而是压缩成为 2 个,它们集合了 20 个属性的所有特征,相当于把重要的信息提取的更好,不重要的信息就不要了。
然后看问题属于哪一类问题,是分类还是回归,还是聚类,就选择相应的算法。
当然还要考虑数据的大小,例如 100K
是一个阈值。
可以发现有些方法是既可以作为分类,也可以作为回归,例如 SGD
。
Sklearn 把所有机器学习的模式整合统一起来了,学会了一个模式就可以通吃其他不同类型的学习模式。
使用模型的步骤:
1. 导入模块
2. 读入数据
3. 建立模型
4. 训练与测试
#!/usr/bin/env python3 # coding=utf8 ''' pandas CSV文件读与写 CSV文件的打乱 CSV文件的分割 sklearn库中RF的调用 ''' # 加载包 import numpy as np import pandas as pd from sklearn.ensemble import RandomForestClassifier import os #################### # CSV读取数据 # 只显示错误信息,不显示警告信息 # 读取成DataFrame的数据 # 将DataFrame的数据转换成Array # 2/3的train_data作为训练数据,1/3的train_data作为测试数据来训练模型,作为验证数据集 #################### os.environ["TF_CPP_MIN_LOG_LEVEL"] = '3' os.chdir("/home/tonny-ftt/tensorflow/bin/main/Adware/suoxiao_data") train_df = pd.read_csv('train_data_10000.csv') train_data = train_df.values test_df = pd.read_csv('test_data_2500.csv') test_data = test_df.values num_features = train_data.shape[0] print("Number of all features: \t\t", num_features) split = int(num_features * 0.8) train = train_data[:split] test = train_data[split:] print(train_data.shape,test_data.shape) #################### # 构建RF结构 # 定义决策树的个数为100 # 开始训练,训练的X数据格式为[[]],训练的y值为[]也就是经过ravel后的数据 # 如果你问我ravel()的作用是什么,就是不管什么数据格式的数据都转成一个一维的array,这样每个元素都是一个平等且顺序的位置 # 然后预测 # 计算准确度 #################### clf = RandomForestClassifier(n_estimators=100) model = clf.fit(train[:,:9], train[:,9].ravel()) output = model.predict(test[:,:9]) acc = np.mean(output == test[:,9].ravel()) *100 print("The accuracy of the pure RandomForest classifier is: \t", acc, "%") #################### # 训练和测试 # 用全部训练数据来做训练 # 用测试集数据来预测最终结果 # 输出预测结果 #################### clf = RandomForestClassifier(n_estimators=100) # 100 trees model = clf.fit(train_data[:,:9], train_data[:,9].ravel()) output = model.predict(test_data[:,:9]) acc = np.mean(output == test_data[:,9].ravel()) *100 print("The accuracy of the pure RandomForest classifier is: \t", acc, "%") pd.DataFrame({"ImageId": range(1, len(output)+1), "Label": output}).to_csv('out.csv', index=False, header=True)