【天池学习赛】数据分析达人赛3:汽车产品聚类分析
赛题背景
赛题以竞品分析为背景,通过数据的聚类,为汽车提供聚类分类。对于指定的车型,可以通过聚类分析找到其竞品车型。通过这道赛题,鼓励学习者利用车型数据,进行车型画像的分析,为产品的定位,竞品分析提供数据决策。
赛题数据
数据源:car_price.csv,数据包括了205款车的26个字段
1 | Car_ID | Unique id of each observation (Interger) | 唯一id |
---|---|---|---|
2 | Symboling | Its assigned insurance risk rating, A value of +3 indicates that the auto is risky, -3 that it is probably pretty safe.(Categorical) | 风险等级(值越大风险越高) |
3 | CarName | Name of car company (Categorical) | 车型(汽车所属公司信息) |
4 | fueltype | Car fuel type i.e gas or diesel (Categorical) | 汽车燃料类型(汽油 or 柴油) |
5 | aspiration | Aspiration used in a car (Categorical) | 吸气装置类型 |
6 | doornumber | Number of doors in a car (Categorical) | 车门数量 |
7 | carbody | body of car (Categorical) | 车身类型 |
8 | drivewheel | type of drive wheel (Categorical) | 驱动轮类型 |
9 | enginelocation | Location of car engine (Categorical) | 汽车发动机的位置 |
10 | wheelbase | Weelbase of car (Numeric) | 汽车轴距 |
11 | carlength | Length of car (Numeric) | 车长 |
12 | carwidth | Width of car (Numeric) | 车宽 |
13 | carheight | height of car (Numeric) | 车高 |
14 | curbweight | The weight of a car without occupants or baggage. (Numeric) | 没有乘客或行李的汽车的重量 |
15 | enginetype | Type of engine. (Categorical) | 发动机类型 |
16 | cylindernumber | cylinder placed in the car (Categorical) | (发动机的)气缸数量 |
17 | enginesize | Size of car (Numeric) | 发送机大小 |
18 | fuelsystem | Fuel system of car (Categorical) | 汽车燃油系统 |
19 | boreratio | Boreratio of car (Numeric) | 钻孔率 |
20 | stroke | Stroke or volume inside the engine (Numeric) | 发动机内的冲程或容积 |
21 | compressionratio | compression ratio of car (Numeric) | 压缩率 |
22 | horsepower | Horsepower (Numeric) | 马力(功率单位) |
23 | peakrpm | car peak rpm (Numeric) | 最大转速(revolutions per minute 每分钟多少转) |
24 | citympg | Mileage in city (Numeric) | 城市里程 |
25 | highwaympg | Mileage on highway (Numeric) | 高速里程 |
26 | price(Dependent variable) | Price of car (Numeric) | 价格 |
赛题任务
选手需要对该汽车数据进行聚类分析,并找到vokswagen汽车的相应竞品。要求选手在天池实验室中用notebook完成以上任务,并分享到比赛论坛。
(聚类分析是常用的数据分析方法之一,不仅可以帮助我们对用户进行分组,还可以帮我们对产品进行分组(比如竞品分析) 这里的聚类个数选手可以根据数据集的特点自己指定,并说明聚类的依据)
代码展示
以下是jupyter notebook代码:
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
import os
from sklearn.preprocessing import LabelEncoder# 1.读取数据
path = '/Users/weiyi/Applications/jupyter_work/ml/datasets/'
car_data = pd.read_csv(path+'car_analysis/car_price.csv')
car_data.info()# 2.数据探索
# 判断是否有重复值
car_data.duplicated().sum()
# 查看数据
car_data['CarName'].value_counts().sort_index()
# 复制原始数据
data = car_data.copy()# 3.特征工程
# 处理字段【CarName】,只保留品牌,并处理品牌中的错误信息
data['CarName']=[i.split(' ')[0] for i in data['CarName']]
# 挑出错误信息,并修改
namedist={'maxda':'mazda','Nissan':'nissan','porcshce':'porsche','toyouta':'toyota','vokswagen':'volkswagen','vw':'volkswagen'}
data['CarName']=data['CarName'].replace(namedist)# 剔除表征车型的特征
data = data.drop(['car_ID','CarName'], axis=1)# 将非数值类型的列,编码为数字
# # 定义函数:将字符串列简单编码为数字
# def strToNum(series):
# key=series.unique()
# value=[i for i in range(len(key))]
# dict1={i:j for i,j in zip(key,value)}
# series=[dict1[i] for i in series]
# return series
# # 提取数据类型为字符串的列,并编码为数字
# strCol=data.dtypes[data.dtypes=='object'].index
# for i in strCol:
# data[i]=strToNum(data[i])
category_fea = list(data.select_dtypes(include=['object']).columns)
for column in category_fea:data[column] = LabelEncoder().fit_transform(data[column])# 数据归一化
from sklearn.preprocessing import MinMaxScaler as MMS
mms=MMS()
data = mms.fit_transform(data) # 4.模型训练
# 利用轮廓系数确定最优K值,最终确定为7
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score # 轮廓系数
x=[]
y=[]
for i in range(2,20):clf=KMeans(n_clusters=i,random_state=2021)clf=clf.fit(data)num=silhouette_score(data, clf.labels_) # 返回所有样本的平均轮廓系数x.append(i)y.append(num)# 5.画图
# sns.lineplot(x=x,y=y)
plt.xlabel('K')
plt.ylabel('silhouette_score')
plt.plot(x,y,'o-')
plt.show() # 如图1# 6.通过选定的最优K值,创建模型并给原始数据贴标签
clf=KMeans(n_clusters=7)
clf=clf.fit(data)
car_data['label']=clf.labels_# 展示分类完的数据
car_data.head(5)# 7.分析:找到volkswagen各车型的相应竞品# 7.1 找出volkswagen对应的所有车型及其分类
# car_data[car_data.CarName.str.contains('volkswagen')][['CarName','label']]
# 'volkswagen 1131 deluxe sedan'.find('volkswagen') 返回0
volkswagen_data=car_data[[i.find('volkswagen')==0 for i in car_data['CarName']]][['CarName','label']]
volkswagen_data # 如图2# 7.2 对应竞品明细
vol_dict=dict(zip(volkswagen_data['CarName'],volkswagen_data['label']))
for k in vol_dict.keys():car_list=car_data[car_data['label']==vol_dict.get(k)]['CarName'].unique().tolist()car_list.remove(k)print('车型 '+k+'对应的竞品有如下'+str(len(car_list))+'种:')print(car_list)print() # 如图3
图1:
图2:
图3:
【天池学习赛】数据分析达人赛3:汽车产品聚类分析相关推荐
- 【算法竞赛学习】数据分析达人赛3:汽车产品聚类分析
赛题背景 赛题以竞品分析为背景,通过数据的聚类,为汽车提供聚类分类.对于指定的车型,可以通过聚类分析找到其竞品车型.通过这道赛题,鼓励学习者利用车型数据,进行车型画像的分析,为产品的定位,竞品分析提供 ...
- 阿里巴巴天池机器学习(数据分析达人赛3:汽车产品聚类分析)
赛题背景 赛题以竞品分析为背景,通过数据的聚类,为汽车提供聚类分类.对于指定的车型,可以通过聚类分析找到其竞品车型.通过这道赛题,鼓励学习者利用车型数据,进行车型画像的分析,为产品的定位,竞品分析提供 ...
- 【算法竞赛学习】数据分析达人赛2:产品关联分析
赛题背景 赛题以购物篮分析为背景,要求选手对品牌的历史订单数据,挖掘频繁项集与关联规则.通过这道赛题,鼓励学习者利用订单数据,为企业提供销售策略,产品关联组合,为企业提升销量的同时,也为消费者提供更适 ...
- 天池:数据分析达人赛1:用户情感可视化分析
[教学赛]数据分析达人赛1:用户情感可视化分析 赛题背景 赛题以网络舆情分析为背景,要求选手根据用户的评论来对品牌的议题进行数据分析与可视化.通过这道赛题来引导常用的数据可视化图表,以及数据分析方法, ...
- 【天池学习赛】数据分析达人赛1:用户情感可视化分析
赛题简介 赛题以网络舆情分析为背景,要求选手根据用户的评论来对品牌的议题进行数据分析与可视化.通过这道赛题来引导常用的数据可视化图表,以及数据分析方法,对感兴趣的内容进行探索性数据分析. 赛题数据 数 ...
- 天池数据分析达人赛3:汽车产品聚类(含代码)
目录 一.赛题介绍 二.数据描述性统计 2.1. 查看缺失值.重复值 2.2. 查看数据统计信息 2.3. 查看数据分布 2.4. 查看异常值 2.5. 数据相关性 三.特征处理 四.数据建模 4.1 ...
- 【数据分析】数据分析达人赛1:用户情感可视化分析
目录 赛题背景 赛题数据 1.导入数据分组 2.文本清洗 3.绘制词云 4.情感分析 (SnowNLP计算情感得分) 5.绘制不同情感值的柱形图 6.不同主题下的情感得分柱形图 7.绘制不同情感词下的 ...
- 阿里云天池 学习赛汇总(教学赛,零基础入门,长期赛)
[教学赛]数据分析达人赛1:用户情感可视化分析 [教学赛]数据分析达人赛2:产品关联分析 [教学赛]数据分析达人赛3:汽车产品聚类分析 零基础入门语音识别-食物声音识别 零基础入门数据挖掘-心跳信号分 ...
- 汽车产品聚类分析(分析向)
目录 1. 项目介绍 2. 使用工具 3. 项目分析 3.1 原数据查看.清洗 3.2 数据处理 3.3 数据降维 3.4 聚类分析 3.5 详细聚类结果提取 1. 项目介绍 数据car_pric ...
最新文章
- Djiango模板语言DTL
- Win32 鼠标绘图代码研究
- 一个实时精准触达系统的自我修养
- jq执行2次同样的方法怎么让第一次执行的不触发_你不知道的CMS GC
- 49.把字符串转换成整数
- 找最长的字符串 (15 分)
- msdev devenv 的命令行用法
- 按键精灵post请求_手把手教你使用按键精灵post登陆网页
- idea风格ui java_IDEA主题美化
- 电子书:《网页木马攻防实战》
- 2021年T电梯修理考试题及T电梯修理考试报名
- chrome突然无法复制粘贴了
- iBeacon 介绍
- 导出excel 并且处理长数字,处理科学计数法,以文本形式存储的数字
- IrisSkin 皮肤
- harbor登录报错doesn‘t contain any IP SANs问题
- 为openwrt 15.05(Chaos Calmer) 新增优酷土豆路由宝配置
- 【ZZ】电影的格式及版本
- android 10.0 展讯 MTK内置可卸载app
- 如何正确选择视频流服务器?