sklearn库简介与实例

官方文档的代码化

一、简介

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)

猜你喜欢

转载自blog.csdn.net/qq_31813549/article/details/79503532