Sklearn基本使用

S k l e a r n 基 本 使 用 Sklearn基本使用 Sklearn使

0 鸢尾花数据集

【1】下载数据集

import seaborn as sns
iris = sns.load_dataset("iris")

【2】数据集的查看

type(iris)

在这里插入图片描述

iris.shape

在这里插入图片描述

iris.head()

在这里插入图片描述

iris.info()

在这里插入图片描述

iris.describe()

在这里插入图片描述

iris.species.value_counts()

在这里插入图片描述

sns.pairplot(data=iris, hue="species")

在这里插入图片描述

【3】数据清洗

iris_simple = iris.drop(["sepal_length", "sepal_width"], axis=1)
iris_simple.head()

在这里插入图片描述

【4】标签编码

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
iris_simple["species"] = encoder.fit_transform(iris_simple["species"])
iris_simple

在这里插入图片描述

【5】数据集的标准化(本数据集特征比较接近,实际处理过程中未标准化)

from sklearn.preprocessing import StandardScaler
import pandas as pd
trans = StandardScaler()
_iris_simple = trans.fit_transform(iris_simple[["petal_length", "petal_width"]])
_iris_simple = pd.DataFrame(_iris_simple, columns = ["petal_length", "petal_width"])
_iris_simple.describe()

在这里插入图片描述

【6】构建训练集和测试集(本课暂不考虑验证集)

from sklearn.model_selection import train_test_split

train_set, test_set = train_test_split(iris_simple, test_size=0.2)
test_set.head()

在这里插入图片描述

iris_x_train = train_set[["petal_length", "petal_width"]]
iris_x_train.head()

在这里插入图片描述

iris_y_train = train_set["species"].copy()
iris_y_train.head()

在这里插入图片描述

iris_x_test = test_set[["petal_length", "petal_width"]]
iris_x_test.head()

在这里插入图片描述

iris_y_test = test_set["species"].copy()
iris_y_test.head()

在这里插入图片描述

1 k近邻算法

【1】基本思想

与待预测点最近的训练数据集中的k个邻居

把k个近邻中最常见的类别预测为带预测点的类别

【2】sklearn实现

from sklearn.neighbors import KNeighborsClassifier
  • 构建分类器对象
clf = KNeighborsClassifier()
clf

在这里插入图片描述

  • 训练
clf.fit(iris_x_train, iris_y_train)

在这里插入图片描述

  • 预测
res = clf.predict(iris_x_test)
print(res)
print(iris_y_test.values)

在这里插入图片描述

  • 翻转
encoder.inverse_transform(res)

在这里插入图片描述

  • 评估
accuracy = clf.score(iris_x_test, iris_y_test)
print("预测正确率:{:.0%}".format(accuracy))

在这里插入图片描述

  • 存储数据
out = iris_x_test.copy()
out["y"] = iris_y_test
out["pre"] = res
out

在这里插入图片描述

out.to_csv("iris_predict.csv")

【3】可视化

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

def draw(clf):

    # 网格化
    M, N = 500, 500
    x1_min, x2_min = iris_simple[["petal_length", "petal_width"]].min(axis=0)
    x1_max, x2_max = iris_simple[["petal_length", "petal_width"]].max(axis=0)
    t1 = np.linspace(x1_min, x1_max, M)
    t2 = np.linspace(x2_min, x2_max, N)
    x1, x2 = np.meshgrid(t1, t2)
    
    # 预测
    x_show = np.stack((x1.flat, x2.flat), axis=1)
    y_predict = clf.predict(x_show)
    
    # 配色
    cm_light = mpl.colors.ListedColormap(["#A0FFA0", "#FFA0A0", "#A0A0FF"])
    cm_dark = mpl.colors.ListedColormap(["g", "r", "b"])
    
    # 绘制预测区域图
    plt.figure(figsize=(10, 6))
    plt.pcolormesh(t1, t2, y_predict.reshape(x1.shape), cmap=cm_light)
    
    # 绘制原始数据点
    plt.scatter(iris_simple["petal_length"], iris_simple["petal_width"], label=None,
                c=iris_simple["species"], cmap=cm_dark, marker='o', edgecolors='k')
    plt.xlabel("petal_length")
    plt.ylabel("petal_width")
    
    # 绘制图例
    color = ["g", "r", "b"]
    species = ["setosa", "virginica", "versicolor"]
    for i in range(3):
        plt.scatter([], [], c=color[i], s=40, label=species[i])    # 利用空点绘制图例
    plt.legend(loc="best")
    plt.title('iris_classfier')
draw(clf)

在这里插入图片描述

2 朴素贝叶斯算法

【1】基本思想

当X=(x1, x2)发生的时候,哪一个yk发生的概率最大

【2】sklearn实现

from sklearn.naive_bayes import GaussianNB
  • 构建分类器对象
clf = GaussianNB()
clf
  • 训练
clf.fit(iris_x_train, iris_y_train)
  • 预测
res = clf.predict(iris_x_test)
print(res)
print(iris_y_test.values)

在这里插入图片描述

  • 评估
accuracy = clf.score(iris_x_test, iris_y_test)
print("预测正确率:{:.0%}".format(accuracy))

在这里插入图片描述

  • 可视化
draw(clf)

在这里插入图片描述

3 决策树算法

【1】基本思想

CART算法:每次通过一个特征,将数据尽可能的分为纯净的两类,递归的分下去

【2】sklearn实现

from sklearn.tree import DecisionTreeClassifier
  • 构建分类器对象
clf = DecisionTreeClassifier()
clf

在这里插入图片描述

  • 训练
clf.fit(iris_x_train, iris_y_train)

在这里插入图片描述

  • 预测
res = clf.predict(iris_x_test)
print(res)
print(iris_y_test.values)

在这里插入图片描述

  • 评估
accuracy = clf.score(iris_x_test, iris_y_test)
print("预测正确率:{:.0%}".format(accuracy))

在这里插入图片描述

  • 可视化
draw(clf)

在这里插入图片描述

4 逻辑回归算法

【1】基本思想

一种解释:

训练:通过一个映射方式,将特征X=(x1, x2) 映射成 P(y=ck), 求使得所有概率之积最大化的映射方式里的参数

预测:计算p(y=ck) 取概率最大的那个类别作为预测对象的分类

【2】sklearn实现

from sklearn.linear_model import LogisticRegression
  • 构建分类器对象
clf = LogisticRegression(solver='saga', max_iter=1000)
clf

在这里插入图片描述

  • 训练
clf.fit(iris_x_train, iris_y_train)

在这里插入图片描述

  • 预测
res = clf.predict(iris_x_test)
print(res)
print(iris_y_test.values)

在这里插入图片描述

  • 评估
accuracy = clf.score(iris_x_test, iris_y_test)
print("预测正确率:{:.0%}".format(accuracy))

在这里插入图片描述

  • 可视化
draw(clf)

在这里插入图片描述

5 支持向量机算法

【1】基本思想

以二分类为例,假设数据可用完全分开:

用一个超平面将两类数据完全分开,且最近点到平面的距离最大

【2】sklearn实现

from sklearn.svm import SVC
  • 构建分类器对象
clf = SVC()
clf

在这里插入图片描述

  • 训练
clf.fit(iris_x_train, iris_y_train)

在这里插入图片描述

  • 预测
res = clf.predict(iris_x_test)
print(res)
print(iris_y_test.values)

在这里插入图片描述

  • 评估
accuracy = clf.score(iris_x_test, iris_y_test)
print("预测正确率:{:.0%}".format(accuracy))

在这里插入图片描述

  • 可视化
draw(clf)

在这里插入图片描述

7 集成方法——随机森林

【1】基本思想

训练集m,有放回的随机抽取m个数据,构成一组,共抽取n组采样集

n组采样集训练得到n个弱分类器 弱分类器一般用决策树或神经网络

将n个弱分类器进行组合得到强分类器

【2】sklearn实现

from sklearn.ensemble import RandomForestClassifier
  • 构建分类器对象
clf = RandomForestClassifier()
clf

在这里插入图片描述

  • 训练
clf.fit(iris_x_train, iris_y_train)

在这里插入图片描述

  • 预测
res = clf.predict(iris_x_test)
print(res)
print(iris_y_test.values)

在这里插入图片描述

  • 评估
accuracy = clf.score(iris_x_test, iris_y_test)
print("预测正确率:{:.0%}".format(accuracy))

在这里插入图片描述

  • 可视化
draw(clf)

在这里插入图片描述

7 集成方法——Adaboost

【1】基本思想

训练集m,用初始数据权重训练得到第一个弱分类器,根据误差率计算弱分类器系数,更新数据的权重

使用新的权重训练得到第二个弱分类器,以此类推

根据各自系数,将所有弱分类器加权求和获得强分类器

【2】sklearn实现

from sklearn.ensemble import AdaBoostClassifier
  • 构建分类器对象
clf = AdaBoostClassifier()
clf

在这里插入图片描述

  • 训练
clf.fit(iris_x_train, iris_y_train)

在这里插入图片描述

  • 预测
res = clf.predict(iris_x_test)
print(res)
print(iris_y_test.values)

在这里插入图片描述

  • 评估
accuracy = clf.score(iris_x_test, iris_y_test)
print("预测正确率:{:.0%}".format(accuracy))

在这里插入图片描述

  • 可视化
draw(clf)

在这里插入图片描述

8 集成方法——梯度提升树GBDT

【1】基本思想

训练集m,获得第一个弱分类器,获得残差,然后不断地拟合残差

所有弱分类器相加得到强分类器

【2】sklearn实现

from sklearn.ensemble import GradientBoostingClassifier
  • 构建分类器对象
clf = GradientBoostingClassifier()
clf

在这里插入图片描述

  • 训练
clf.fit(iris_x_train, iris_y_train)

在这里插入图片描述

  • 预测
res = clf.predict(iris_x_test)
print(res)
print(iris_y_test.values)

在这里插入图片描述

  • 评估
accuracy = clf.score(iris_x_test, iris_y_test)
print("预测正确率:{:.0%}".format(accuracy))

在这里插入图片描述

  • 可视化
draw(clf)

在这里插入图片描述

9 大杀器

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值