zoukankan      html  css  js  c++  java
  • python 10大算法之二 LogisticRegression 笔记

    使用的包

    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    from sklearn import datasets

    获取数据

    方式一 读取网页提供的数据:

    df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)
    df.columns
    = ['d1', 'd2', 'd3', 'd4', 'd5'] X = df.iloc[:, [0, 3]].values # 取出2个特征,并把它们用Numpy数组表示

     方式二  由于Iris是很有名的数据集,scikit-learn已经原生自带了

    iris = datasets.load_iris()
    X = iris.data[:, [0, 1, 2]]  # 1,2,3列
    y = iris.target  # 结果集

    方式三 scikit-learn随机数据生成

    def get_data1():
        """
        scikit-learn随机数据生成   make_regression生成回归模型数据
        :return: 
        """
    
        # X为样本特征,y为样本输出, coef为回归系数w,共100个样本,每个样本1个特征
        # coef 默认为false  true为线性模型
        # noise 干扰 0为一条直线上的点
        X, y, coef = datasets.make_regression(n_samples=100, n_features=1, noise=30, coef=True)
        # 画图
        plt.scatter(X, y, color='black')
        plt.plot(X, X * coef, color='blue', linewidth=3)
    
        plt.xticks()
        plt.yticks()
    
        plt.show()
    def get_data2():
        """
        scikit-learn随机数据生成  make_blobs生成聚类模型数据
        :return: 
        """
    
        # X为样本特征,Y为样本簇类别,
        # 共100个样本,每个样本2个特征,共3个簇,
        # random_state 为具体数字表示每次生成的随机数不变
        # 簇中心
        centers = [[1, 5], [2, 3], [5, 1]]
        # 簇方差
        cluster_std = [0.4, 0.3, 0.2]
        X, y = datasets.make_blobs(n_samples=100, n_features=2, centers=centers, cluster_std=cluster_std, random_state=1)
    
        # 画图 按照y区分颜色
        plt.scatter(X[:, 0], X[:, 1], marker='o', c=y)
    
        plt.xticks()
        plt.yticks()
    
        plt.show()

    参考: http://www.cnblogs.com/pinard/p/6047802.html

    train_test_split

    # from sklearn.cross_validation import train_test_split
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

    train_test_split 随机划分训练集和测试集

    参数解释:

    train_data:所要划分的样本特征集

    train_target:所要划分的样本结果

    test_size:样本占比,如果是整数的话就是样本的数量

    random_state:是随机数的种子。

    随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。

    随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。

    数据转换 - 标准化

    参考:http://www.cnblogs.com/charlotte77/p/5622325.html

    # 标准化 -- 为了追求机器学习和最优化算法的最佳性能,我们将特征缩放
    from sklearn.preprocessing import StandardScaler
    sc
    = StandardScaler() sc.fit(X_train) # 估算每个特征的平均值和标准差
    print(sc.mean_) # 查看特征的平均值,由于Iris我们只用了两个特征,所以结果是array([ 3.82857143, 1.22666667]) print(sc.scale_) # 查看特征的标准差,这个结果是array([ 1.79595918, 0.77769705])

    X_train_std = sc.transform(X_train) # 注意:这里我们要用同样的参数来标准化测试集,使得测试集和训练集之间有可比性 X_test_std = sc.transform(X_test)

    X_combined_std = np.vstack((X_train_std, X_test_std))
    y_combined = np.hstack((y_train, y_test))

    感知器 - Perceptron

        from sklearn.metrics import accuracy_score
    
        # 训练感知机模型
        from sklearn.linear_model import Perceptron
        # n_iter:可以理解成梯度下降中迭代的次数
        # eta0:可以理解成梯度下降中的学习率
        # random_state:设置随机种子的,为了每次迭代都有相同的训练集顺序
        ppn = Perceptron(max_iter=40, eta0=0.1, random_state=0)
        ppn.fit(X_train_std, y_train)
    
        # 分类测试集,这将返回一个测试结果的数组
        y_pred = ppn.predict(X_test_std)
    
        # 计算模型在测试集上的准确性,我的结果为0.9,还不错
        print('训练结果的准确性:', accuracy_score(y_test, y_pred))

    逻辑回归-LogisticRegression

        from sklearn.linear_model import LogisticRegression
        lr = LogisticRegression(C=1000.0, random_state=0)
        lr.fit(X_train_std, y_train)
        y_pred = lr.predict_proba(X_test_std)  # 查看第一个测试样本属于各个类别的概率
        print(y_test)
        print(y_pred)
        print('训练结果的准确性:', metrics.accuracy_score(y_test, lr.predict(X_test_std)))

    参考:http://blog.csdn.net/xlinsist/article/details/51289825

    官方逻辑回归案例:

    http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

  • 相关阅读:
    C#利用反射动态调用类及方法
    系统程序监控软件
    SQL server 2008 安装和远程访问的问题
    sql server 创建临时表
    IIS 时间问题
    windows 2008 安装 sql server 2008
    sql server xml nodes 的使用
    Window 7sp1 安装vs2010 sp1 打开xaml文件崩溃
    CSS资源网址
    Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0
  • 原文地址:https://www.cnblogs.com/haoxr/p/7722809.html
Copyright © 2011-2022 走看看