zoukankan      html  css  js  c++  java
  • 一、【python】机器学习基础

    专有名词

    • 机器学习 (machine learning)
    • 预测分析 (predictive analytics)
    • 统计学习 (statistical learning)
    • 监督学习 (supervised learning)
    • 无监督学习 (unsupervised learning)
    • 样本 (sample)
    • 特征 (feature)
    • 特征提取 (feature extraction)
    • 分类 (classification)
    • 类别 (class)
    • 标签 (label)
    import numpy as np
    import matplotlib as plt
    import pandas as pd
    import scipy as sp
    import sklearn
    
    # 以上为我们需要的类
    
    

    1、鸢尾花分类

    关键词

    • 分类(classification)
    • 散点图(Scatter Plot)
    • 散点图矩阵(Pair Plot)
    • 训练数据(training data)
    • 训练集(training set)
    • 留出集(hold-out set)

    鸢尾花分类,是机器学习的一个入门和经典的知识点。我们往往可以通过这个小例子入手,来了解一下什么是机器学习。

    python的scikit-learn模块已经将鸢尾花的数据进行内置,所以只需要调用函数进行读取和训练即可,无需准备数据。

    # 输出iris——dataset中的键,了解一下存储了那些内容
    from sklearn.datasets import load_iris
    
    iris_dataset = load_iris()
    print("keys of iris_dataset:{}
    ".format(iris_dataset.keys()))
    
    keys of iris_dataset:dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])
    

    load_iris返回的iris对象是一个Bunch对象,与字典很相似,里面包含了键和值

    # 输出描述信息的部分内容
    print(iris_dataset['DESCR'][:200]+'
    ')
    
    .. _iris_dataset:
    
    Iris plants dataset
    --------------------
    
    **Data Set Characteristics:**
    
        :Number of Instances: 150 (50 in each of three classes)
        :Number of Attributes: 4 numeric, predictive
    

    上面的DESCR键对应的值为数据集的简要说明。
    target_name键对应的值是一个字符串数组,里面包含我们要预测的花的种类

    print("Target_name:{}".format(iris_dataset['target_names']))
    
    Target_name:['setosa' 'versicolor' 'virginica']
    

    feature_names键对应的值是一个字符串列表,对每一个特征进行了说明

    print("Feature name:{}".format(iris_dataset['feature_names']))
    
    Feature name:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
    

    通常为了可以达到训练和测试的目的,将收集好的带标签数据分为两部分,一部分数据用于构建机器学习模型,叫做训练数据(training data)或训练集(training set)其余的数据用来评估模型的性能,叫做测试数据(test data)测试集(test set)或留出集(hold-out set)。

    from sklearn.model_selection import train_test_split
    from sklearn.datasets import load_iris
    
    iris_dataset = load_iris()
    X_train,X_target,y_train,y_target = train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=0)
    print("X_train:{}
     X_tar:{}
     y_tar:{}
     y_tra:{}
    ".format(X_train,X_target,y_target,y_train))
    

    为了实现训练和测试的目的,scikit-learn内置了train_test_split函数,帮助我们对训练、测试数据,和训练、测试的标签默认按3:1的比例进行拆分。从而返回数据给定的参数。也可以使用随机种子的形式进行随机按比例分布。

    # 利用X_train中的数据创建DataFrame
    # 利用iris_dataset.feature_names中的字符串对数据阵列进行标记
    iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
    # 利用DataFrame创建散点图矩阵,按y_train着色
    grr = pd.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), maker='0',hist_kwds={'bins':20}, s=60,alpha=.8)
    

    scikit-learn中所有的机器学习模型都在各自的类中实现,这些类被称之为Estimator类。k近邻分类算法是在neighbor模块的KNeightborsClassifier类中实现。

    
    from sklearn.neighbors import KNeighborsClassifier
    knn = KNeighborsClassifier(n_neighbors=1)
    knn.fit(X_train,y_train)
    
    

    KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',metric_params=None, n_jobs=None, n_neighbors=1, p=2,weights='uniform')

    X_new = np.array([[5,2.9,1,0.2]])
    prediction = knn.predict(X_new)
    print("Result of Prediction:{}".format(prediction))
    print("{}".format(iris_dataset['target_names'][prediction]))
    

    Result of Prediction:[0]
    ['setosa']

    流程总结:

    1. 准备数据
    2. 分为训练数据和测试数据
    3. 观察数据
    4. 构建模型
    5. 做出预测
    6. 评估精度
    # 代码总结
    from sklearn.model_selection import train_test_split
    from sklearn.datasets import load_iris
    from sklearn.neighbors import KNeighborsClassifier
    
    iris_dataset = load_iris()
    X_train,X_target,y_train,y_target = train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=0)
    knn = KNeighborsClassifier(n_neighbors=1)
    knn.fit(X_train,y_train)
    print("Test set score:{:.2f}".format(knn.score(X_target,y_target)))
    
    Test set score:0.97
    
    
    
    谁不是孤身一人,翻山越岭
  • 相关阅读:
    Windows Live Writer网址缩短插件
    花点时间了解消息,句柄和窗口
    大学生的心声
    CSS,样式选择器
    如何转换非发布网站为发布网站(how to convert nonpublishing sites to publishing sites)
    SharePoint 2010视频演示和培训
    [转]ASP.NET会话(Session)保存模式
    SharePoint查阅项(Lookup)字段多值分隔符
    [转]再看关键链进度计划
    如何通过组策略管理器修改Windows系统设置选项
  • 原文地址:https://www.cnblogs.com/hasz/p/12994993.html
Copyright © 2011-2022 走看看