使用Python分析二手汽车的销售价格 -- 机器学习项目基础篇(9)

如今,随着技术的进步,机器学习等技术正在许多组织中大规模使用。这些模型通常使用一组以数据集形式提供的预定义数据点。这些数据集包含特定域的过去/先前信息。在将这些数据点馈送到模型之前组织这些数据点是非常重要的。这就是我们使用数据分析的地方。如果输入到机器学习模型的数据组织得不好,它就会给出错误或不希望的输出。这可能会给组织造成重大损失。因此,正确的数据分析非常重要。

关于数据集

我们在这个例子中使用的数据是关于汽车的。具体包含有关二手汽车的各种信息数据点,如价格,颜色等。在这里,我们需要明白,仅仅收集数据是不够的。原始数据没有用。在这里,数据分析在释放我们所需的信息并获得对这些原始数据的新见解方面发挥着至关重要的作用。
考虑一下这个场景,我们的朋友想卖掉他的车。但是他不知道他的车应该卖多少钱!他希望利润最大化,但他也希望以合理的价格出售给想要拥有它的人。所以在这里,我们,作为一个数据科学家,我们可以帮助我们的朋友。

让我们像数据科学家一样思考,并明确定义他的一些问题:例如,是否有其他汽车的价格及其特性的数据?汽车的哪些特点会影响其价格?颜色?品牌?马力是否也会影响销售价格,或者其他什么?
作为数据分析师或数据科学家,这些是我们可以开始思考的一些问题。为了回答这些问题,我们需要一些数据。但这些数据都是原始数据。因此,我们首先需要分析它。
数据源:https://archive.ics.uci.edu/ml/machine-learning-databases/autos/imports-85.data

所需模块

  • pandas:Pandas是一个开源库,允许您在Python中执行数据操作。Pandas提供了一种简单的方法来创建、操作和处理数据。
  • numpy:Numpy是使用Python进行科学计算的基本包。numpy可以用作通用数据的有效多维容器。
  • Matplotlib:Matplotlib是一个Python 2D绘图库,可以生成各种格式的出版质量图。
  • Seaborn是一个基于matplotlib的Python数据可视化库。Seaborn提供了一个高级界面,用于绘制有吸引力和信息丰富的统计图形。
  • Scipy是一个基于Python的开源软件生态系统,用于数学,科学和工程。

以下代码中使用的步骤(简短说明)

  • 导入软件包
  • 设置数据文件(.csv文件)的路径
  • 查找我们的文件中是否有任何空数据或NaN数据。如果有,请将其移除
  • 对您的数据执行各种数据清理和数据可视化操作。为了更好地理解,这些步骤以注释的形式在每一行代码旁边进行了说明,因为并排查看代码比在这里完全解释代码更好,这是没有意义的。
  • 获得结果!

让我们开始分析数据。

第1步:导入所需的模块

# importing section
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import scipy as sp

第2步:让我们检查数据集的前五个条目

# using the Csv file
df = pd.read_csv('output.csv') # Checking the first 5 entries of dataset
df.head()

在这里插入图片描述
第3步:为数据集定义头

headers = ["symboling", "normalized-losses", "make", "fuel-type", "aspiration","num-of-doors","body-style","drive-wheels", "engine-location","wheel-base","length", "width","height", "curb-weight","engine-type","num-of-cylinders", "engine-size", "fuel-system","bore","stroke", "compression-ratio","horsepower", "peak-rpm","city-mpg","highway-mpg","price"]df.columns=headers
df.head()

在这里插入图片描述
第4步:查找缺失值(如果有的话)。

data = df# Finding the missing values
data.isna().any()# Finding if missing values 
data.isnull().any() 

在这里插入图片描述
第5步:将mpg转换为L/100 km,并检查每列的数据类型。

# converting mpg to L / 100km
data['city-mpg'] = 235 / df['city-mpg']
data.rename(columns = {'city_mpg': "city-L / 100km"}, inplace = True)print(data.columns)# checking the data type of each column
data.dtypes 

在这里插入图片描述
第6步:这里,price是对象类型(string),它应该是int或者float,所以我们需要改变它

data.price.unique()# Here it contains '?', so we Drop it
data = data[data.price != '?']# checking it again
data.dtypes

在这里插入图片描述
在这里插入图片描述
第7步:使用简单的缩放方法示例(其余部分执行)和分箱值进行归一化-分组

data['length'] = data['length']/data['length'].max()
data['width'] = data['width']/data['width'].max()
data['height'] = data['height']/data['height'].max()# binning- grouping values
bins = np.linspace(min(data['price']), max(data['price']), 4) 
group_names = ['Low', 'Medium', 'High']
data['price-binned'] = pd.cut(data['price'], bins, labels = group_names, include_lowest = True)print(data['price-binned'])
plt.hist(data['price-binned'])
plt.show()

在这里插入图片描述
第8步:对分类数据进行描述性分析。

# categorical to numerical variables
pd.get_dummies(data['fuel-type']).head()# descriptive analysis
# NaN are skipped
data.describe()

在这里插入图片描述
第9步:根据基于引擎大小的价格绘制数据。

# examples of box plot
plt.boxplot(data['price'])# by using seaborn
sns.boxplot(x ='drive-wheels', y ='price', data = data)# Predicting price based on engine size
# Known on x and predictable on y
plt.scatter(data['engine-size'], data['price'])
plt.title('Scatterplot of Enginesize vs Price')
plt.xlabel('Engine size')
plt.ylabel('Price')
plt.grid()
plt.show()

在这里插入图片描述
第10步:根据车轮,车身样式和价格对数据进行分组。

# Grouping Data
test = data[['drive-wheels', 'body-style', 'price']]
data_grp = test.groupby(['drive-wheels', 'body-style'], as_index = False).mean()data_grp

在这里插入图片描述
第11步:使用透视表方法获得的数据绘制热图

# pivot method
data_pivot = data_grp.pivot(index = 'drive-wheels',columns = 'body-style')
data_pivot# heatmap for visualizing data
plt.pcolor(data_pivot, cmap ='RdBu')
plt.colorbar()
plt.show()

在这里插入图片描述
在这里插入图片描述
第12步:获得最终结果并以图形的形式显示。当斜率在正方向上增加时,它是正线性关系。

# Analysis of Variance- ANOVA
# returns f-test and p-value
# f-test = variance between sample group means divided by 
# variation within sample group
# p-value = confidence degree
data_annova = data[['make', 'price']]
grouped_annova = data_annova.groupby(['make'])
annova_results_l = sp.stats.f_oneway(grouped_annova.get_group('honda')['price'],grouped_annova.get_group('subaru')['price'])
print(annova_results_l)# strong corealtion between a categorical variable
# if annova test gives large f-test and small p-value# Correlation- measures dependency, not causation
sns.regplot(x ='engine-size', y ='price', data = data)
plt.ylim(0, )

在这里插入图片描述

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

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

相关文章

【Python ezdxf+matplotlib】显示AutoCAD导出的.dxf格式文件

代码: import ezdxf,matplotlib import matplotlib.pyplot as plt from matplotlib.patches import Polygon matplotlib.use(TkAgg) # 避免Matplotlib版本与其他相关库的兼容性问题def display_dxf(file_path):doc ezdxf.readfile(file_path)msp doc.modelspac…

SpringBoot3基础用法

技术和工具「!喜新厌旧」 一、背景 最近在一个轻量级的服务中,尝试了最新的技术和工具选型; 即SpringBoot3,JDK17,IDEA2023,Navicat16,虽然新的技术和工具都更加强大和高效,但是适应采坑的过程…

如何进行高效的知识管理?5款好用的桌面思维导图软件推荐!

一 、思维导图:高效知识管理法 近年来,随着网络资源的丰富,共享的、私域的、免费的、付费的,大量的知识信息呈一种铺天盖地之势,知识管理变得越来越重要。无论是学生、教师、企业家还是其他专业人士,都…

2023-08-07 LeetCode每日一题(反转字符串)

2023-08-07每日一题 一、题目编号 344. 反转字符串二、题目链接 点击跳转到题目位置 三、题目描述 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、…

MFC第二十七天 通过动态链表实现游戏角色动态增加、WM_ERASEBKGND背景刷新的原理、RegisterClass注册窗口与框架程序开发

文章目录 通过动态链表实现游戏角色动态增加CMemoryDC.hCFlashDlg.hCFlashDlg.cpp WM_ERASEBKGND背景刷新的原理RegisterClass注册窗口与框架程序开发CFrameRegister 通过动态链表实现游戏角色动态增加 CMemoryDC.h #pragma once#include "resource.h"/*内存DC类简介…

【论文阅读】UNICORN:基于运行时来源的高级持续威胁检测器(NDSS-2020)

UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats NDSS-2020 哈佛大学 Han X, Pasquier T, Bates A, et al. Unicorn: Runtime provenance-based detector for advanced persistent threats[J]. arXiv preprint arXiv:2001.01525, 2020. 源码&…

Docker网络模式详解

目录 Docker网络模式 一、Host模式 二、container模式 三、none模式 四、bridge模式 五、Overlay模式 Docker网络模式 安装Docker时会自动创建3个网络,可以使用docker network ls命令列出这些网络。 [rootdocker ~]# docker network ls 我们在使用docker run…

git开发过程中的使用

1、先创建本地分支,然后修改代码 2、本地提交 push 3、合并为主分支 回到master分支

共治、公开、透明!龙蜥社区 7 月技术委员会会议顺利召开!

2023 年 7 月 14 日上午 10 点召开了龙蜥社区7月技术委员会线上会议,共计 39 人参会,本次会议由浪潮信息苏志远博士主持,开放原子 TOC 导师陈阳、霍海涛、徐亮、余杰共同参会,技术委员们来自 Arm、阿里云、飞腾、海光、红旗软件、…

实时服务器监控

为 IT 基础架构建立适当的监控系统的重要性不容低估,管理员使用的监控解决方案可确保通过消除瓶颈和优化资源使用以获得最佳性能来充分发挥基础架构的潜力。 多年来,IT 基础架构变得越来越复杂,对网络监控的需求也随之增加,虽然网…

【Linux】网络编程套接字

目录 1 预备知识 1.1 IP地址 1.2 端口号 1.3 TCP协议和UDP协议 1.4 网络字节序 2 socket 编程接口 2.0 socket 常见 API 2.1 socket 系统调用 2.2 bind 系统调用 2.3 recvfrom 系统调用 2.4 sendto 系统调用 2.5 listen 系统调用 2.6 accept 系统调用 2.7 con…

spring.config.location 手动指定配置文件文件

–spring.config.locationD:\javaproject\bangsun\ds-admin\ds-oper-mgr\src\main\resources\application.yml