文章目录

  • 前言
  • 一、了解数据概况
  • 二、单变量分析
  • 三、可视化
  • 四、建立模型
    • 1.线性回归模型
      • ①导库、读取数据
      • ②了解数据概况且对后续建模进行数据处理
      • ③建立线性回归模型
    • 2.逻辑回归模型
      • ①统计预测目标结果(流失)中的0和1比例
      • ②观察导致目标结果(高流失率)是哪些变量
      • ③逻辑回归模型建立与优化
      • ④模型解读
    • 3.聚类分析模型
      • ①数据处理
      • ②聚类分析模型建立
  • 总结

前言

借线性回归模型、逻辑回归模型、聚类分析模型做数据分析的入门,机器学习包括两类学习,线性回归与逻辑回归为监督式学习,聚类分析为非监督学习;其中用到的几个库:pandas为数据分析工具集用以数据清洗、Matplotlib\Seaborn为可视化库、sklearn为机器学习第三方模块,封装了多种机器学习方法方便取用


一、了解数据概况

前提:新建DataFrame命名为store

store.info() — 读取数据
index_col=0 — 第一列就是index值,不用新增一列unnamed;
(index_col=none/false — 重新设置一列为成为index值)
用法:store=pd.read_csv(‘w2_store_rev.csv’,index_col=0)

store.isnull().sum() — .isnull()判断数据集store每一列是否是空,是的话标1,不是的话标0;.sum()最后加总
store.describe() — 了解数据分布、大小情况;

二、单变量分析

前提:导入数据分析处理的核心库
import pandas as pd;

store.event.unique() / store[‘event’].unique()— 数据来源.变量名.unique()以数组形式返回该列所有唯一值;
store.groupby([‘event’])[‘revenue’].describe() — 将收入按事件分类统计;
store=pd.get_dummies(store) — 对store中所有类别变量进行量化,值存在为1,否则0;
store=pd.get_dummies(store[‘event’]) — 只对event变量进行量化;
store.corr() — 查看所有变量之间的相关性;
store.corr()[[‘revenue’]].sort_value(‘revenue’,ascending=False) — 查看所有变量与‘revenue’变量的相关性(注意revenue的为双中括号,否则变成series),sort_values()根据某一字段做升降序排列,不加ascending则默认升序,ascending=False为降序;

三、可视化

前提:导入可视化库
import seaborn as sns;
import matplotlib.pyplot as plt
%matplotlib inline;

sns.regplot(‘local_tv’,‘revenue’,store) — sns.regplot(字段1:自变量,字段2:因变量,数据),对自变量进行线性关系可视化分析,生成散点图以及一条线性回归的拟合参考线;

四、建立模型

1.线性回归模型

案例:宝洁销售额预测

①导库、读取数据

代码如下(示例):

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
store = pd.read_csv('w2_store_rev.csv',index_col=0)

②了解数据概况且对后续建模进行数据处理

代码如下(示例):

store = pd.get_dummies(store['event']) #类别变量转为数值型变量(哑变量)
store.drop(['local_tv_no','person_no'],axis=1,inplace=True) #删除不需要的哑变量,axis=1表示跨列,axis=0表示跨行,inplace=true表示对原始对象进行修改,不创建新对象,inplace=false表示创建新对象承载结果;
store.isnull().sum() #统计数据空值
store = store.fillna(0) / store = store.fillna(store.local_tv.mean()) #缺失值用0或均值填补;缺失数量在5%左右可直接填充
store.columns = store.columns.str.lower() #统一字段的大小写方便书写不出错误,columns表示列变量名,str.lower()表示大写转小写,str.upper()表示小写转大写
store = store.rename(columns={'churn_yes':'flag'}) #变量重命名

③建立线性回归模型

代码如下(示例):

from sklearn.linear_model import LinearRegression #从skleaen库的linear_model线性模型库中导入LinearRegression
model=LinearRegression() #设置模型为线性回归
y = store['revenue']
x = store[['local_tv','person','instore']] #设置自变量和因变量
model.fit(x,y) #训练模型
score = model.score(x,y) #x和y打分
predictions = model.predict(x) #计算y预测值
error = predictions-y #计算误差
rmse = (error**2).mean()**.5 #计算rmse(均方根误差)
mae = abs(error).mean() #计算mae(平均绝对误差)
print(rmse) #值越小误差越小
print(mae)

2.逻辑回归模型

案例:消费者行为预测:客户流失预测

①统计预测目标结果(流失)中的0和1比例

代码如下(示例):

churn.flag.value_counts()/churn.flag.value_counts(1) #统计流失中的0和1数量/比例,一般样本0和1分布比例不能有太大偏差,1不能低于5%

②观察导致目标结果(高流失率)是哪些变量

代码如下(示例):

#新建DataFrame为summary,将其他变量值以flag为依据进行分类统计,取均值,得知导致高流失率的变量
summary=churn.groupby('flag')
summary.mean()#可视化展示不同变量与流失率的关系
sns.countplot(y='contact_month',hue='flag',data=churn) #y为需要查看的变量,hue=flag将数据按照0/1分组,data=churn为数据来源#相关性分析
churn.corr()[['flag']].sort_values('flag',ascending=False)

③逻辑回归模型建立与优化

代码如下(示例):

#设定x和y变量
y = churn['flag']
x = churn[['contact_month','internet_other','streamingtv']]
#加载数据切分工具包
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=100)
#建模并拟合模型
from sklearn.linear_model import LogisticRegression
Ir=LogisticRegression()
Ir.fit(x_train,y_train)
#模型系数解读:查看模型截距和系数
Ir.intercept_
Ir.coef_
#基于模型的结果,对训练集与测试集中X的真实值预测对应的Y
y_pred_train=Ir.predict(x_train)
y_pred_test=Ir.predict(x_test)#模型评估
#搭建训练集混淆矩阵
import sklearn.metrics as metrics
metrics.confusion_matrix(y_train,y_pred_train)
#计算训练集准确率
metrics.accuracy_score(y_train,y_pred_train)
#搭建测试集混淆矩阵
metrics.confusion_matrix(y_test,y_pred_test)
#计算测试集准确率
metrics.accuracy_score(y_test,y_pred_test)#模型优化
改变test_size/选取其他相关性更强X变量

④模型解读

不同于线性回归模型系数直接反映X对Y的增加和减少,逻辑回归模型的系数表达的是一种概率的概念;
例,p表示目标为1的概率,1-p表示目标为0的概率,当系数为2时:

log(p/1-p)=2
即p/1-p=exp(2)=7.39
对应该变量下事件发生是不发生的7.39倍;

3.聚类分析模型

①数据处理

代码如下(示例):

#年龄变量异常值处理:把年龄限制在18-80
airbnb=airbnb[airbnb['age']<=80]
airbnb=airbnb[airbnb['age']>=18]#变量'date_account_created',to_datetime转变为日期格式
airbnb['date_account_created']=pd.to_datetime(airbnb['date_account_created'])
airbnb['year_since_account_created']=airbnb['date_account_created'].apply(lambda x:2019-x.year) #生成衍生变量,".year"将年份提取出来,apply(lambda)-应用lambda所阐述的规则#删除前面生成的日期变量,可以根据数据格式进行drop
airbnb.drop(airbnb.select_dtypes(['datetime64']),inplace=True,axis=1)
#类别变量转为哑变量
airbnb=pd.get_dummies(airbnb)

lambda为匿名函数,即没有具体名称的函数,它允许快速定义单行函数,可以用在任何需要函数的地方;
lambda原型为:lambda 参数:操作(参数)
lambda表达式“ : ”后面,只能有一个表达式

②聚类分析模型建立

代码如下(示例):

#选择用于聚类分析的变量并标准化
airbnb_5=airbnb[['age','web','moweb','ios','android']]
#使用sklearn中的preprocessing将数据标准化并存入x变量:调用preprocessing库,scale()实现标准化并存入x变量中
from sklearn.preprocessing import scale
x=pd.DataFrame(scale(airbnb_5))#使用sklearn模块的cluster建立模型,尝试分为3类并拟合模型
from sklearn import cluster
model=cluster.KMeans(n_clusters=3,random_stata=10)
model.fit(x)#从模型中提取簇标签存入labels这个数组中查看前20行分类情况
airbnb_5['cluster']=model.labels_
airbnb_5.head(20)#查看分群效果是否明显
airbnb_5.groupby(['cluster'])['age'].describe()
airbnb_5.groupby(['cluster'])['ios'].describe()#模型评估:计算轮廓系数,评分越高,个体与群距离越近
from sklearn import metrics
x_cluster=model.fit_predict(x) #计算个体与群的距离
score=metrics.silhouette_score(x,x_cluster)
print(score)#模型优化
哪个变量的分群效果弱即将其调整为其他变量进行模型拟合/调整分群数#业务解读:导出结果到文件进行
centers=pd.DataFrame(model.cluster_center_)
centers.to_csv('center_3.csv')
人群在某个特征变量上数据的绝对值越大,说明这个人群在这个特征上有较明显的区分度。

总结

本文借三个案例,简单介绍了pandas的部分使用、可能遇到的数据处理方法以及模型的建立解读。

聚类分析、线性回归分析与分类分析(逻辑回归模型)相关推荐

  1. R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型、分类预测器(分类变量)被自动替换为一组虚拟编码变量、summary函数查看检查模型、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型(Logistic regression).分类预测器(分类变量)被自动替换为一组虚拟编码变量.summary函数查看检查模型.使用t ...

  2. r语言logistic回归_R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用...

    原文链接 :http://tecdat.cn/?p=14017​tecdat.cn 通常,我们在回归模型中一直说的一句话是" 请查看一下数据 ". 在上一篇文章中,我们没有查看数据 ...

  3. r 多元有序logistic回归_R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用...

    原文链接 拓端数据科技 / Welcome to tecdat​tecdat.cn 通常,我们在回归模型中一直说的一句话是" 请查看一下数据 ". 在上一篇文章中,我们没有查看数据 ...

  4. R语言 | 二分类和多分类的逻辑回归实现

    目录 二分类逻辑回归 数据准备 模型构建 模型检验 多分类逻辑回归 二分类逻辑回归 首先,我先展示下我逻辑回归的总体代码,如果有基础的同志需要的话,可以直接修改数据和参数拿去用呀: library(l ...

  5. 机器学习入门与Python实战(三):分类与逻辑回归 Logistic Regression

    目录 现实案例 分类预测 通过股价预测任务区分回归任务与分类任务 分类问题求解 更适合于分类场景的模型:逻辑回归 逻辑回归处理更复杂的分类任务 逻辑回归模型求解 Python实战:商业异常消费数据预测 ...

  6. 二元分类问题搭建逻辑回归模型

    1.读取数据--pandas #利用pandas读取数据 import pandas as pd data = pd.read_csv(r"H:\Python\data\adult.data ...

  7. AI上推荐 之 逻辑回归模型与GBDT+LR(特征工程模型化的开端)

    1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产 ...

  8. 机器学习第四章之逻辑回归模型

    逻辑回归模型 4.1 逻辑回归模型算法原理 4.1.1 逻辑回归模型的数学原理(了解) 4.1.2 逻辑回归模型的代码实现(重要) 4.1.3 逻辑回归模型的深入理解 4.2 案例实战 - 股票客户流 ...

  9. 机器学习之逻辑回归模型

    文章目录 分类思想 逻辑回归模型公式 公式推导 sigmoid函数 避免过拟合 降低模型复杂度 加入L1/L2正则项 正则化的作用 增加训练数据 使用逻辑回归模型进行多分类的几种方式 One vs O ...

最新文章

  1. 每天一道笔试题-2012年2月16日
  2. Linuxamp;nbsp;shell中的竖线(|)——…
  3. java cocoon_Java-跳跃路线
  4. java arraylist 函数_Java Extend ArrayList函数
  5. overflow超出显示_实现:超过N行折叠并显示“...查看全部”【功能】
  6. why I get 415 error for my http post Service request creation in JMeter
  7. 浅谈 Kubernetes Scheduling-Framework 插件的实现
  8. DLF +DDI 一站式数据湖构建与分析最佳实践
  9. AI ProCon倒计时6天:60+业内技术专家,探秘9大核心技术专题
  10. OJ1081: n个数求和 (多实例测试)(C语言数组实现)
  11. python旋转坐标系_python实现一个点绕另一个点旋转后的坐标
  12. 盘点2019年5G:商用大戏开唱 三大问题亟待解决
  13. 怎么检测计算机硬件好坏,电脑硬件检测,电脑硬件好坏检测工具
  14. 关于深度学习的研究综述
  15. mysql PTA题解查询平均成绩最高的前三名同学
  16. 东京工业大学 计算机 大学院,2020年东京工业大学计算机科学硕士申请条件
  17. 微信公众号模板消息源码
  18. 【Python】unicode编码和bytes编码不能混用
  19. python并列排名_一日一技:Python实现有序列表并列排名
  20. 如何让你爱的人爱上你

热门文章

  1. 自学网络安全遇到问题怎么解决?
  2. 发生异常: NotADirectoryError Errno 20 Not a directory: xim.DS_Store
  3. 数字信号处理翻转课堂笔记9
  4. 大三学生考研VS就业,该如何选择
  5. Java服务器接口快速开发之Servlet详细教程
  6. linux下shell命令之cut
  7. 微信小程序开发初学:生命周期函数
  8. 5 设置windows2003 ipsec/l2tp psk 的接入服务器. 及一些看到的问题.
  9. Visio 转为高质量PDF
  10. [置顶] HADOOP大数据离线分析+实时分析框架;Hadoop+Flume+Kafka+Storm+Hive+Sqoop+mysql/oracle