Python数据挖掘—回归—逻辑回归

概念

针对因变量为分类变量而进行回归分析的一种统计方法,属于概率型非线性回归

  优点:算法易于实现和部署,执行效率和准确度高

  缺点:离散型的自变量数据需要通过生成虚拟变量的方式来使用

在线性回归中,因变量是连续性变量,那么线性回归能根据因变量和自变量存在的线性关系来构造回归方程,因变量变成分类变量后就不存在这种关系了,需通过对数变换来进行处理(Sigmoid函数)

步骤:

1、读取数据;

import pandas
from pandas import read_csv

data=read_csv(
    "C:\\Users\\Jw\\Desktop\\python_work\\Python数据挖掘实战课程课件\\4.4\\data.csv",
    encoding="utf-8")

data=data.dropna()

dummyColumns=()

data.shape

  

2、处理字符型和大小无关的字段,如果字段有可比性,可进行大小比较,然后调用map一一映射,将离散型数据转化为数值型数据

  首先处理字符类型和大小无关的字段

#首先处理字符类型和大小无关的字段
dummyColumns=[
    ‘Gender‘,‘Home Ownership‘,
    ‘Internet Connection‘, ‘Marital Status‘,
    ‘Movie Selector‘, ‘Prerec Format‘, ‘TV Signal‘]

for column in dummyColumns:
    data[column]=data[column].astype(‘category‘)

dummiesData=pandas.get_dummies(
        data,
        columns=dummyColumns,
        prefix=dummyColumns,
        prefix_sep=" ",  #列名和属性值之间的分割符号
        drop_first=True)  #根据特征列建模,为避免模型共轭,只选取一列

data.Gender.unique()   #去重

dummiesData.columns   #获取所有列

  处理字符类型和大小有关的字段,然后使用map一一映射

#有可比性,可进行大小比较
educationLevelDict={
    ‘Post-Doc‘: 9,
    ‘Doctorate‘: 8,
    ‘Master\‘s Degree‘: 7,
    ‘Bachelor\‘s Degree‘: 6,
    ‘Associate\‘s Degree‘: 5,
    ‘Some College‘: 4,
    ‘Trade School‘: 3,
    ‘High School‘: 2,
    ‘Grade School‘: 1
    }

#调用map一一映射,将离散型数据转化为数值型数据
dummiesData["Education Level Map"]=dummiesData[‘Education Level‘].map(educationLevelDict)

freqMap={
    ‘Never‘:0,
    ‘Rarely‘: 1,
    ‘Monthly‘: 2,
    ‘Weekly‘: 3,
    ‘Daily‘: 4}

dummiesData[‘PPV Freq Map‘]=dummiesData[‘PPV Freq‘].map(freqMap)
dummiesData[‘Theater Freq Map‘] = dummiesData[‘Theater Freq‘].map(freqMap)
dummiesData[‘TV Movie Freq Map‘] = dummiesData[‘TV Movie Freq‘].map(freqMap)
dummiesData[‘Prerec Buying Freq Map‘] = dummiesData[‘Prerec Buying Freq‘].map(freqMap)
dummiesData[‘Prerec Renting Freq Map‘] = dummiesData[‘Prerec Renting Freq‘].map(freqMap)
dummiesData[‘Prerec Viewing Freq Map‘] = dummiesData[‘Prerec Viewing Freq‘].map(freqMap)

3、选取自标量和因变量,县选取所有列,然后一一查看选择

 1 #选取自变量和因变量
 2 dummiesData.columns
 3
 4 #先选取所有列,然后一一查看选择
 5 dummiesSelect = [
 6     ‘Age‘, ‘Num Bathrooms‘, ‘Num Bedrooms‘, ‘Num Cars‘, ‘Num Children‘, ‘Num TVs‘,
 7     ‘Education Level Map‘, ‘PPV Freq Map‘, ‘Theater Freq Map‘, ‘TV Movie Freq Map‘,
 8     ‘Prerec Buying Freq Map‘, ‘Prerec Renting Freq Map‘, ‘Prerec Viewing Freq Map‘,
 9     ‘Gender Male‘,
10     ‘Internet Connection DSL‘, ‘Internet Connection Dial-Up‘,
11     ‘Internet Connection IDSN‘, ‘Internet Connection No Internet Connection‘,
12     ‘Internet Connection Other‘,
13     ‘Marital Status Married‘, ‘Marital Status Never Married‘,
14     ‘Marital Status Other‘, ‘Marital Status Separated‘,
15     ‘Movie Selector Me‘, ‘Movie Selector Other‘, ‘Movie Selector Spouse/Partner‘,
16     ‘Prerec Format DVD‘, ‘Prerec Format Laserdisk‘, ‘Prerec Format Other‘,
17     ‘Prerec Format VHS‘, ‘Prerec Format Video CD‘,
18     ‘TV Signal Analog antennae‘, ‘TV Signal Cable‘,
19     ‘TV Signal Digital Satellite‘, ‘TV Signal Don\‘t watch TV‘
20 ]
21
22 inputData=dummiesData[dummiesSelect]   #自变量
23
24
25 outputData=dummiesData[["Home Ownership Rent"]]   #因变量

4、建模、训练、评分

1 #建模、训练
2 from sklearn import linear_model
3
4 lrModel=linear_model.LogisticRegression()
5
6 lrModel.fit(inputData,outputData)
7
8 lrModel.score(inputData,outputData)

5、预测(因为逻辑回归所用的参数是经过虚拟变量处理过的,所以新数据也许通过处理才能进行预测)

 1 #因为逻辑回归所用的参数是经过虚拟变量处理过的,需对新的数据进行预测,要先处理新数据
 2 newData=read_csv(
 3     "C:\\Users\\Jw\\Desktop\\python_work\\Python数据挖掘实战课程课件\\4.4\\newData.csv",
 4     encoding="utf-8")
 5
 6 for column in dummyColumns:
 7     newData[column]=newData[column].astype(
 8         "category",
 9         categories=data[column].cat.categories)
10
11 newData=newData.dropna()
12
13
14 newData[‘Education Level Map‘] = newData[‘Education Level‘].map(educationLevelDict)
15 newData[‘PPV Freq Map‘] = newData[‘PPV Freq‘].map(freqMap)
16 newData[‘Theater Freq Map‘] = newData[‘Theater Freq‘].map(freqMap)
17 newData[‘TV Movie Freq Map‘] = newData[‘TV Movie Freq‘].map(freqMap)
18 newData[‘Prerec Buying Freq Map‘] = newData[‘Prerec Buying Freq‘].map(freqMap)
19 newData[‘Prerec Renting Freq Map‘] = newData[‘Prerec Renting Freq‘].map(freqMap)
20 newData[‘Prerec Viewing Freq Map‘] = newData[‘Prerec Viewing Freq‘].map(freqMap)
21
22
23 dummiesNewData=pandas.get_dummies (
24         newData,
25         columns=dummyColumns,
26         prefix=dummyColumns,
27         prefix_sep=" ",
28         drop_first=True)
29
30 inputNewData = dummiesNewData[dummiesSelect]
31
32 lrModel.predict(inputData)

原文地址:https://www.cnblogs.com/U940634/p/9742721.html

时间: 2024-10-13 04:40:32

Python数据挖掘—回归—逻辑回归的相关文章

【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景知识 在刚刚结束的天猫大数据s1比赛中,逻辑回归是大家都普遍使用且效果不错的一种算法. (1)回归 先来说说什么是回归,比如说我们有两类数据,各有50十个点组成,当我门把这些点画出来,会有一条线区分这两组数据,我们拟合出这个曲线(因为很有可能是非线性),就是回归.我们通过大量的数据找出这条线,并拟合出这条线的表达式,再有数据,我们就以这条线为区分来实现分类.下图是我画的一个数据集的两组数据,中间有一条

Logistic回归 逻辑回归 练习——以2018建模校赛为数据源

把上次建模校赛一个根据三围将女性分为四类(苹果型.梨形.报纸型.沙漏)的问题用逻辑回归实现了,包括从excel读取数据等一系列操作. Excel的格式如下:假设有r列,则前r-1列为数据,最后一列为类别,类别需要从1开始,1~k类, 如上表所示,前10列是身高.胸围.臀围等数据(以及胸围和腰围.胸围和臀围的比值),最后一列1表示属于苹果型. import tensorflow as tf import os import numpy import xlrd XDATA = 0 YDATA = 0

[深度学习]Python/Theano实现逻辑回归网络的代码分析

首先PO上主要Python代码(2.7), 这个代码在Deep Learning上可以找到. 1 # allocate symbolic variables for the data 2 index = T.lscalar() # index to a [mini]batch 3 x = T.matrix('x') # the data is presented as rasterized images 4 y = T.ivector('y') # the labels are presente

深度学习:逻辑回归

深度学习(Deep Learning)是机器学习(Machine Learning)的一大分支,它试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法. 逻辑回归(Logistic Regression,也译作"对数几率回归")是离散选择法模型之一,属于多重变量分析范畴,是社会学.生物统计学.临床.数量心理学.计量经济学.市场营销等统计实证分析的常用方法. 符号约定 逻辑回归一般用于二分类(Binary Classification)问题中,给定一些输入,输出

线性回归,逻辑回归的学习(包含最小二乘法及极大似然函数等)

博文参考了以下两位博主的文章:http://blog.csdn.net/lu597203933/article/details/45032607,http://blog.csdn.net/viewcode/article/details/8794401 回归问题的前提: 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数.然后利用这个模型去预测/分类新的数据. 1. 线性回归 假设 特征 和 结果 都满足线性.即不大于一次方.这个是针对 收集的数据

逻辑回归模型分析

本文主要分两个部分进行讨论,首先介绍最简单的线性回归模型:接着对逻辑回归进行分析 1.线性回归-->最小二乘法 对于线性回归问题,我们根据自变量的个数将其分为一元线性回归和多元线性回归,本部分先详细介绍一元线性模型,然后将其推广到多元线性模型 1)一元线性模型 当输入只有一个自变量时,我们称之为一元线性模型.(最简单) 设样本集合为:(xi,yi),i=1,2,…,m. 目标为:在平面上找出一条线,使得样本点尽可能多的在这条直线上. 设一元线性模型为:h(x)=ax+b,输出误差为:Si=yi-

对线性回归、逻辑回归、各种回归的概念学习

http://blog.csdn.net/viewcode/article/details/8794401 回归问题的条件/前提: 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数.然后利用这个模型去预测/分类新的数据. 1. 线性回归 假设 特征 和 结果 都满足线性.即不大于一次方.这个是针对 收集的数据而言.收集的数据中,每一个分量,就可以看做一个特征数据.每个特征至少对应一个未知的参数.这样就形成了一个线性模型函数,向量表示形式: 这个就

逻辑回归 logistic regression(1)逻辑回归的求解和概率解释

本系列内容大部分来自Standford公开课machine learning中Andrew老师的讲解,附加自己的一些理解,编程实现和学习笔记. 第一章 Logistic regression 1.逻辑回归 逻辑回归是一种监督学习的分类算法,相比较之前的线性回归算法,差别在于它是一个分类算法,这也意味着y不再是一个连续的值,而是{0,1}的离散值(两类问题的情况下). 当然这依然是一个判别学习算法,所谓判别学习算法,就是我们直接去预测后验 ,或者说直接预测判别函数的算法.当然相对应的生成学习算法,

逻辑回归的相关问题及java实现

本讲主要说下逻辑回归的相关问题和详细的实现方法 1. 什么是逻辑回归 逻辑回归是线性回归的一种,那么什么是回归,什么是线性回归 回归指的是公式已知,对公式中的未知參数进行预计,注意公式必须是已知的,否则是没有办法进行回归的 线性回归指的是回归中的公式是一次的,比如z=ax+by 逻辑回归事实上就是在线性回归的基础上套了一个sigmoid函数,详细的样子例如以下 2. 正则化项 引入正则化项的目的是防止模型过拟合,函数对样本的拟合有三种结果 欠拟合:直观的理解就是在训练集上的误差比較大,拟合出来的