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数列.简易 ...
随机推荐
- Jenkins安装后无法安装插件
处理方法 Jenkins -- 管理插件 -- 高级 -- 升级站点 将URL 中的https 改为 http
- MySQL 主从复制实战解析
前言:前面几篇文章讲解了在应用层读写分离的配置和使用,这篇文章将来个主从复制的实战解析. 说明:主从复制,读写分离结构图 原理图 主库生成一个线程: Binlog Dump线程 1.此线程运行在主库, ...
- unittest 框架-待优化
模块1 :getdata.py 读取测试用例test_case.xlsx,返回测试用例结果 import json from openpyxl import load_workbook class D ...
- Mybatis插件机制以及PageHelper插件的原理
首先现在已经有很多Mybatis源码分析的文章,之所以重复造轮子,只是为了督促自己更好的理解源码. 1.先看一段PageHelper拦截器的配置,在mybatis的配置文件<configurat ...
- MySQL实战45讲学习笔记:索引(第四讲)
一.索引模型 1.索引的作用: 索引的出现其实是为了提高数据查询的效率,就像书的目录一样 提高数据查询效率 2.索引模型的优缺点比较 二.InnoDB索引模型 1.二叉树是搜索效率最高的,但是实际上大 ...
- 【转】Redis学习笔记(四)如何用Redis实现分布式锁(1)—— 单机版
原文地址:http://bridgeforyou.cn/2018/09/01/Redis-Dsitributed-Lock-1/ 为什么要使用分布式锁 这个问题,可以分为两个问题来回答: 为什么要使用 ...
- 汇编语言笔记v1.0
1.loop的用法 loop指令的格式是:loop标号,cpu执行loop指令的时候,要进行两步操作 1:(cx)=(cx)-1 2:判断cx中的值,不为零则转至标号处执行,如果为零,则向下执行 这里 ...
- Thunk
Thunk https://en.wikipedia.org/wiki/Thunk In computer programming, a thunk is a subroutine used to i ...
- springBoot和Mybatis输出sql日志
利用slf4j来输出日志. 首先需要版本兼容的slf4j-log4j12.log4j.slf4j-api.slf4j-nop.slf4j-simple这5个包. 可以去maven知识库中找到这5个包的 ...
- R语言数据集的技术
特征值选择技术要点 特征值选择技术要点(特征值分解) 作者:王立敏 文章来源:xiahouzuoxin 一.特征值分解 1.特征值分解 线性代数中,特征分解(Eigendecomposition),又 ...