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数列.简易 ...
随机推荐
- 数组的处理方法,filter的用法
在数组的使用中,我们通常会有数组的过滤的需求,比如值 在某个范围内的数字,用来组成一个新的数组,这就用到了数组的过滤 例: var number=[23,3,51,65,13,45,65,23,63] ...
- jstl标签库需要两个包jstl.jar和standard.jar
要使用jstl的标签库,将文件复制到WEB-INF/lib目录下,需要在jsp源文件的首部加入如下声明语句(一般放在page语句之后) 核心(core) <%@ taglib uri=&qu ...
- Vue(小案例_vue+axios仿手机app)_购物车(计算商品总金额)
一.前言 1.计算总金额 2.点击删除按钮,删除对应的商品信息 3.当还没结算的时候,当用户跳到其他页面 ...
- Java如何计算一个程序的运行时间
话不多说 直接看代码 package com.mowcode; /** * * @ClassName: Code_01_ProjectTime * @Description: 拿到程序运行时间 * @ ...
- netty和protobuf的使用
一.什么是protobuf Protobuf是google的开源项目,全称是Google Protocol Buffers,它是一个与语言无关.平台无关.可扩展的结构化数据序列化机制,类似XML,但它 ...
- MySQL实战45讲学习笔记:索引(第四讲)
一.索引模型 1.索引的作用: 索引的出现其实是为了提高数据查询的效率,就像书的目录一样 提高数据查询效率 2.索引模型的优缺点比较 二.InnoDB索引模型 1.二叉树是搜索效率最高的,但是实际上大 ...
- docker 基础知识分享ppt
给团队做的docker基础分享ppt, 见下面的附件. https://files.cnblogs.com/files/harrychinese/docker_intro.pptx
- UE4网络同步属性笔记
GameMode只有服务端有,适合写游戏逻辑.PlayerController每个客户端拥有一个,并拥有主控权.GameState在服务端同步到全端. CLIENT生成的Actor对其有Authori ...
- 在线制作微信跳转浏览器下载app/打开指定页面源码
微信自动跳转外部浏览器下载app/打开指定页面源码 源码说明: 适用安卓和苹果系统,支持任何网页链接.并且无论链接是否已经被微信拦截,均可实现微信内自动跳转浏览器打开. 生成的跳转链接具有极佳的防拦截 ...
- 整理c盘文件
清理大文件时,发现以下目录文件过大,删除后可以正常启动java程序,此目录应该是安装jdk时的缓存文件,可以删除 C:\Users\xxxx\AppData\LocalLow\Oracle\Java\ ...