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
python 10大算法之二 LogisticRegression 笔记的更多相关文章
- python 10大算法之一 LinearRegression 笔记
简单的线性回归预测房价 #!/usr/bin/env python # encoding: utf-8 """ @version: @author: --*--. @fi ...
- 数据挖掘10大算法(1)——PageRank
1. 前言 这系列的文章主要讲述2006年评出的数据挖掘10大算法(见图1).文章的重点将偏向于算法的来源以及算法的主要思想,不涉及具体的实现.如果发现文中有错,希望各位指出来,一起讨论. 图1 来自 ...
- 数据结构笔记01:编程面试过程中常见的10大算法(java)
以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: ...
- 面试10大算法汇总——Java篇
问题导读 1 字符串和数组 2 链表 3 树 4 图 5 排序 6 递归 vs 迭代 7 动态规划 8 位操作 9 概率问题 10 排列组合 11 其他 -- 寻找规律 英文版 以下从Java角度解释 ...
- 面试10大算法汇总+常见题目解答(Java)
原文地址:http://www.lilongdream.com/2014/04/10/94.html(为转载+整理) 以下从Java的角度总结了面试常见的算法和数据结构:字符串,链表,树,图,排序,递 ...
- JavaScript实现10大算法可视化
参考博客: https://www.cnblogs.com/Unknw/p/6346681.html#4195503 十大经典算法 一张图概括: 名词解释: n:数据规模 k:“桶”的个数 In-pl ...
- Python十大经典排序算法
现在很多的事情都可以用算法来解决,在编程上,算法有着很重要的地位,将算法用函数封装起来,使程序能更好的调用,不需要反复编写. Python十大经典算法: 一.插入排序 1.算法思想 从第二个元素开始和 ...
- 人们对Python在企业级开发中的10大误解
From : 人们对Python在企业级开发中的10大误解 在PayPal的编程文化中存在着大量的语言多元化.除了长期流行的C++和Java,越来越多的团队选择JavaScript和Scala,Bra ...
- C语言的10大基础算法
C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文包括了经典的Fibonacci数列.简易 ...
随机推荐
- Daily Codeforces 计划 训练时录
时间 场次 过题数目 补题数目 难易度 2019.4.7 codeforces-1141 ...
- head里两个重要标签base和meta
base标签 <base href="../"> 我们并不常用的一个标签,但是一旦用得不当会带来灾难性的影响. 它会影响到所有页面上的href和src属性相对路劲的定位 ...
- hbase-default.xml(Hbase 默认参数翻译)
hbase.tmp.dir \({java.io.tmpdir}/hbase-\){user.name} 本地文件系统上的临时目录.将'/tmp'改为其他可以持久保存文件的位置,通常能够解决java. ...
- Tomcat系列(6)——Tomcat处理一个HTTP请求的过程
Tomcat的架构图 图三:Tomcat Server处理一个HTTP请求的过程 处理HTTP请求过程 假设来自客户的请求为:http://localhost:8080/test/index.js ...
- 计算机网络(HTTP)之客户识别:cookie机制
什么是cookie? 承载用户相关信息的HTTP首部 cookie的工作原理 cookie的缺陷 一.什么是cookie? cookie是由服务器生成,发送给USER-Agent(一般是浏览器),(服 ...
- python之路(12)网络编程
前言 基于网络通信(AF_INET)的socket(套接字)实现了TCP/UDP协议 目录 基于TCP协议的socket 基于UDP协议的socket TCP协议下粘包现象及处理 使用socketse ...
- python 基础部分重点复习整理2
把这里的题目争取刷一遍 博客记录 python的ORM框架peewee SQLAlchemy psycopg2 Django 在1 的基础上,重点突出自己以前没注意的,做到精而不杂!!! Python ...
- PMP知识点(一)——风险登记册
一.Reference: [管理心得之四十八]<风险登记册>本身的风险 问题日志与风险登记册的区别与联系 PMBOK重要概念梳理之二十六 风险登记册 风险登记单-MBAlib 二.Atta ...
- 1、jQuery的使用入门
一.创建一个WEB项目,在WebRoot下新建一个Jscript文件夹,并将jQuery中的jquery-3.1.1.min.js文件复制过来. 二.用<script>标签引入jQuery ...
- OOP的魔术方法
1.构造函数:__construct(): 构造函数是类中的一个特殊函数,当我们使用new关键字实例化对象时,相当于调用了类的构造函数. function __construct($name){ $t ...