博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 10大算法之二 LogisticRegression 笔记
阅读量:5334 次
发布时间:2019-06-15

本文共 3262 字,大约阅读时间需要 10 分钟。

 

使用的包

import matplotlib.pyplot as pltimport pandas as pdimport 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()

参考: 

 

 

train_test_split

# from sklearn.cross_validation import train_test_splitfrom 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或不填,每次都会不一样。

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

 

数据转换 - 标准化

参考:

# 标准化 -- 为了追求机器学习和最优化算法的最佳性能,我们将特征缩放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)))

 

 

参考:

 

官方逻辑回归案例:

 

转载于:https://www.cnblogs.com/haoxr/p/7722809.html

你可能感兴趣的文章
SSM集成activiti6.0错误集锦(一)
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
MSChart的研究
查看>>
C# 索引器
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
delphi 内嵌汇编例子
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
对闭包的理解
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>