数据挖掘目标(客户价值分析)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

In [2]:

data=pd.read_csv(r'../教师文件/air_data.csv')

In [3]:

data.head()

Out[3]:

Start_timeEnd_timeFareCityAgeFlight_countAvg_discountFlight_mileage
02011/08/182014/03/315860.0.35.0100.97312912560
12011/01/132014/03/315561.0佛山35.0120.57590621223
22012/08/152014/03/311089.0北京33.090.63502519246
32012/10/172014/03/319626.0绍兴县53.070.86857114070
42011/09/042014/03/314473.0上海34.0130.70341917373

In [4]:

data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 15000 entries, 0 to 14999
Data columns (total 8 columns):#   Column          Non-Null Count  Dtype  
---  ------          --------------  -----  0   Start_time      15000 non-null  object 1   End_time        15000 non-null  object 2   Fare            14989 non-null  float643   City            14490 non-null  object 4   Age             14907 non-null  float645   Flight_count    15000 non-null  int64  6   Avg_discount    15000 non-null  float647   Flight_mileage  15000 non-null  int64  
dtypes: float64(3), int64(2), object(3)
memory usage: 937.6+ KB

In [5]:

data.describe()

Out[5]:

FareAgeFlight_countAvg_discountFlight_mileage
count14989.00000014907.00000015000.00000015000.00000015000.000000
mean3761.74381242.5695319.0576000.72839112395.706800
std2720.2065799.8073853.9463380.1635503588.357291
min0.00000016.0000002.0000000.1360174040.000000
25%1709.00000035.0000006.0000000.6255259747.000000
50%3580.00000041.0000008.0000000.71332211986.500000
75%5452.00000048.00000011.0000000.80384014654.000000
max36602.000000110.00000047.0000001.50000050758.000000

In [6]:

data=data[data.Fare.notnull()]

In [7]:

data=data[data.Fare!=0]

In [8]:

for index,item in data.iterrows():s_year,s_month=item['Start_time'].split('/')[:2]e_year,e_month=item['End_time'].split('/')[:2]data.loc[index,'Months']=(int(e_year)-int(s_year))*12+(int(e_month)-int(s_month))
data=data.drop(['Start_time','End_time'],axis=1)

In [9]:

data.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 13279 entries, 0 to 14998
Data columns (total 7 columns):#   Column          Non-Null Count  Dtype  
---  ------          --------------  -----  0   Fare            13279 non-null  float641   City            12809 non-null  object 2   Age             13199 non-null  float643   Flight_count    13279 non-null  int64  4   Avg_discount    13279 non-null  float645   Flight_mileage  13279 non-null  int64  6   Months          13279 non-null  float64
dtypes: float64(4), int64(2), object(1)
memory usage: 1.3+ MB

In [10]:

data=data.drop(['City'],axis=1)
data=(data-data.mean(axis=0))/data.std(axis=0)

In [11]:

data.head()

Out[11]:

FareAgeFlight_countAvg_discountFlight_mileageMonths
00.643204-0.7819590.1917521.5394250.019051-0.616333
10.524036-0.7819590.700041-0.9356252.427818-0.357005
2-1.258303-0.985351-0.062393-0.5672611.878109-1.060895
32.1441621.048561-0.5706810.8879390.438910-1.134989
40.090408-0.8836550.954185-0.1411051.357317-0.653379

In [12]:

plt.figure(figsize=(10,10))
plt.title("Pearson Correlation of Features",y=1.05,size=15)
sns.heatmap(data.astype(float).corr(),linewidths=0.1,vmax=1,square=True,cmap=plt.cm.viridis,linecolor='white',annot=True)

Out[12]:

<AxesSubplot:title={'center':'Pearson Correlation of Features'}>

In [13]:

data=data.drop(['Fare','Age'],axis=1)

In [14]:

from sklearn.cluster import KMeans

In [15]:

kmeans=KMeans(n_clusters=3).fit(data)

In [16]:

kmeans.cluster_centers_

Out[16]:

array([[-0.56475974,  0.54131875, -0.70701626, -0.56628176],[-0.06513412, -0.03376272, -0.10437466,  1.24214471],[ 0.75090493, -0.63663316,  0.95977635, -0.37662422]])

In [17]:

kmeans.labels_

Out[17]:

array([0, 2, 2, ..., 0, 0, 0])

In [18]:

from collections import defaultdict

In [28]:

label_dict=defaultdict(int)

In [29]:

for label in kmeans.labels_:label_dict[label] += 1

In [30]:

label_dict

Out[30]:

defaultdict(int, {0: 5287, 2: 4287, 1: 3705})

In [31]:

kmeans.cluster_centers_

Out[31]:

array([[-0.56475974,  0.54131875, -0.70701626, -0.56628176],[-0.06513412, -0.03376272, -0.10437466,  1.24214471],[ 0.75090493, -0.63663316,  0.95977635, -0.37662422]])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/269628.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion替换背景

在Stable Diffusion软件中,使用ControlNet+模型实现固定物体批量替换背景 出图的流程。 一、准备好图片 1.你需要准备好一些白底图或者透明底图用于训练模型。 2.你需要准备同样角度的其他背景色底图用于ControlNet勾线 3.注意检查你的图片尺寸,是否为1:1,…

【STM32】DMA直接存储器存取

1 DMA简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 可以直接访问STM32的存储器的&#xff0c;包括运行SRAM、程序存储器Flash和寄存器等等 DMA可以提供外设寄存器和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节…

vue 集成行政区域选择插件region和数据回显

故事&#xff1a;最近&#xff0c;项目需要进行行政区域围栏的绘制&#xff0c;由于老旧项目是利用js保存全国行政区域地址和编码&#xff0c;在选择器select进行匹配显示&#xff0c;但此方法复杂&#xff0c;因此选择集成区域插件region 步骤一&#xff1a;用命令安装region…

梳理一下嵌入式和单片机之间的关系

一定有很多人都听说过嵌入式和单片机&#xff0c;但在刚开始接触时&#xff0c;不知道大家有没有听说过嵌入式就是单片机这样的说法&#xff0c;其实嵌入式和单片机还是有区别的。单片机与嵌入式到底有什么关系&#xff1f; 下面我们就来说说嵌入式和单片机之间的联系和区别吧…

K8S(二)—介绍

K8S的整体结构图 k8s对象 在 Kubernetes 系统中&#xff0c;Kubernetes 对象是持久化的实体。 Kubernetes 使用这些实体去表示整个集群的状态。 具体而言&#xff0c;它们描述了如下信息&#xff1a; 哪些容器化应用正在运行&#xff08;以及在哪些节点上运行&#xff09;可…

【大数据】Doris 架构

Doris 架构 Doris 的架构很简洁&#xff0c;只设 FE&#xff08;Frontend&#xff09;、BE&#xff08;Backend&#xff09;两种角色、两个进程&#xff0c;不依赖于外部组件&#xff0c;方便部署和运维&#xff0c;FE、BE 都可线性扩展。 ✅ Frontend&#xff08;FE&#xff0…

Appium 自动化自学篇 —— 初识Appium自动化!

Appium 简介 随着移动终端的普及&#xff0c;手机应用越来越多&#xff0c;也越来越重要。而作为测试 的我们也要与时俱进&#xff0c;努力学习手机 App 的相关测试&#xff0c;文章将介绍手机自动化测试框架 Appium 。 那究竟什么是 Appium 呢? 接下来我们一起来学习PythonS…

西南交通大学【数电实验6---可控分频器设计】

一、实验电路图、状态图、程序代码、仿真代码、仿真波形图&#xff08;可以只写出核心功能代码&#xff0c;代码要有注释&#xff09; 不管sel为0或者1&#xff0c;clk_out[0]的频率都是不变的&#xff0c;故在always块当中&#xff0c;可优先对clk_out[0]进行处理&#xff0c;…

部署Kubernetes(k8s)集群,可视化部署kuboard

所需机器 主机名地址角色配置k8s-master192.168.231.134主节点2核4G,centos7k8s-node1192.168.231.135工作节点2核4G,centos7k8s-node2192.168.231.136工作节点2核4G,centos7 主节点CPU核数必须是 ≥2核且内存要求必须≥2G&#xff0c;否则k8s无法启动 1. 集群环境部署【三台…

nrm 的使用 可以快速切换下载(npm)镜像,解决资源下载慢和运行失败

nrm是什么&#xff1f; 介绍 nrm(npm registry manager) 是 npm 的镜像源管理工具. 有时候国外资源太慢,使用 nrm 可以快速的在 npm 源之间切换 安装 npm install -g nrm 基本使用 查看可选择的源 nrm ls 切换到对应的镜像源 nrm use 对应的镜像 删除镜像源 nrm del 名字 …

Axure元件的介绍使用与登录界面以及个人简历的绘制

目录 一.Axure元件介绍 1.1.简介 1.2.常见的元件 1.3.元件的操作 二.基本元件的使用 2.1.矩形和圆形 2.2.图片 2.3.文本元件 2.4.热区 2.5.线段元件 三.表单型元件的使用 3.1.文本框 3.2.文本域 3.3.下拉列表 3.4.列表框 3.5.单选按钮 3.6.复选框 四.菜单和表…

Kafka系列之:统计kafka集群Topic的分区数和副本数,批量增加topic副本数

Kafka系列之:统计kafka集群Topic的分区数和副本数,批量增加topic副本数 一、创建KafkaAdminClient二、获取kafka集群topic元信息三、获取每个topic的名称、分区数、副本数四、生成增加topic副本的json文件五、执行增加topic副本的命令六、确认topic增加副本是否成功一、创建K…