机器学习之sklearn基础教程!

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

 Datawhale干货 

作者:李祖贤,深圳大学,Datawhale高校群成员

本次分享是基于scikit-learn工具包的基本分类方法,包括常见的Logisitic Regression、支持向量机、决策树、随机森林以及K近邻方法KNN。本文在基于读者已经基本了解这些基本算法的原理以及推导的基础上,使用sklearn工具包进行算法实践,如果大家没有掌握基本算法原理,文中也会给出一些优秀的链接方便大家学习。如果大家对基本分类算法的基本原理有需求,可以在评论区写下自己的需求,我们会根据大家的意见推出相应的分享。

机器学习算法主要步骤有:

  • 选择特征并且收集并训练样本

  • 选择度量性能的指标

  • 选择分类器并优化算法

  • 评估模型性能

  • 调整算法

本次分享主要把目光聚集在"选择分类器并优化算法",我们将用学术界和工业界常用的机器学习库sklearn,对算法进行实践。

本文内容:

  • 数据准备

  • 逻辑回归

  • 支持向量机

  • 决策树

  • 随机森林

  • KNN

1. 数据准备

我们使用鸢尾花数据集,进行分析考核可视化

# 引入数据
from sklearn import datasets
import numpy as np


iris = datasets.load_iris()
X = iris.data[:,[2,3]]
y = iris.target
print("Class labels:",np.unique(y))  #打印分类类别的种类

Class labels: [0 1 2]

切分训练数据和测试数据

# 切分训练数据和测试数据
from sklearn.model_selection import train_test_split
## 30%测试数据,70%训练数据,stratify=y表示训练数据和测试数据具有相同的类别比例
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=1,stratify=y)

数据标准化

from sklearn.preprocessing import StandardScaler


sc = StandardScaler()
## 估算训练数据中的mu和sigma
sc.fit(X_train)
## 使用训练数据中的mu和sigma对数据进行标准化
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)

定制可视化函数:画出决策边界图(只有在2个特征才能画出来)

## 画出决策边界图(只有在2个特征才能画出来)
import matplotlib.pyplot as plt
%matplotlib inline
from matplotlib.colors import ListedColormap


def plot_decision_region(X,y,classifier,resolution=0.02):
    markers = ('s','x','o','^','v')
    colors = ('red','blue','lightgreen','gray','cyan')
    cmap = ListedColormap(colors[:len(np.unique(y))])


    # plot the decision surface
    x1_min,x1_max = X[:,0].min()-1,X[:,0].max()+1
    x2_min,x2_max = X[:,1].min()-1,X[:,1].max()+1
    xx1,xx2 = np.meshgrid(np.arange(x1_min,x1_max,resolution),
                         np.arange(x2_min,x2_max,resolution))
    Z = classifier.predict(np.array([xx1.ravel(),xx2.ravel()]).T)
    Z = Z.reshape(xx1.shape)
    plt.contourf(xx1,xx2,Z,alpha=0.3,cmap=cmap)
    plt.xlim(xx1.min(),xx1.max())
    plt.ylim(xx2.min(),xx2.max())


    # plot class samples
    for idx,cl in enumerate(np.unique(y)):
        plt.scatter(x=X[y==cl,0],
                   y = X[y==cl,1],
                   alpha=0.8,
                   c=colors[idx],
                   marker = markers[idx],
                   label=cl,
                   edgecolors='black')

2. 基于逻辑回归的分类概率建模

2.1 原理介绍

可参考阅读:一文详尽系列之逻辑回归

2.2 参考文档详细解释

class sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

2.2.1可选参数

  • penalty:正则化方式,可选择‘l1’, ‘l2’, ‘elasticnet’, ‘none’,默认'l2'

  • dual:是否选择对偶,当n_samples> n_features时,首选dual = False

  • tol:算法停止的误差条件,默认是0.0001

  • C:正则强度的倒数;必须为正浮点数,较小的值指定更强的正则化,默认为1.0

  • fit_intercept:是否应将常量(也称为偏差或截距)添加到决策函数。默认是True。

  • intercept_scaling:不常用

  • class_weight:对类别进行加权,可以使用字典形式加权,输入‘balanced’代表权重为类别频率,默认是"None"。

  • random_state:选择随机种子,打乱样本时候指定。

  • solver:指定优化器类型,可选‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’

    具体的优化方法参考:机器学习中的优化算法!

  • max_iter:算法收敛的最大迭代次数,默认100。

  • multi_class:不常用。

  • verbose:对于liblinear和lbfgs,求解器将verbose设置为任何正数以表示详细程度。

  • warm_start:不常用。

  • n_jobs:使用内核数。

  • l1_ratio:弹性网络参数,其中0 <= l1_ratio <=1。仅当penalty=“ elasticnet”时使用。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值