大数据分析案例-基于SVM支持向量机算法构建手机价格分类预测模型

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


喜欢大数据分析项目的小伙伴,希望可以多多支持该系列的其他文章

大数据分析案例合集
大数据分析案例-基于随机森林算法预测人类预期寿命
大数据分析案例-基于随机森林算法的商品评价情感分析
大数据分析案例-用RFM模型对客户价值分析(聚类)
大数据分析案例-对电信客户流失分析预警预测
大数据分析案例-基于随机森林模型对北京房价进行预测
大数据分析案例-基于RFM模型对电商客户价值分析
大数据分析案例-基于逻辑回归算法构建垃圾邮件分类器模型
大数据分析案例-基于决策树算法构建员工离职预测模型

大数据分析案例-基于KNN算法对茅台股票进行预测

大数据分析案例-基于多元线性回归算法构建广告投放收益模型
大数据分析案例-基于随机森林算法构建返乡人群预测模型
大数据分析案例-基于决策树算法构建金融反欺诈分类模型

目录

1.项目背景

2.项目简介

2.1项目说明

2.2数据说明

2.3技术工具

3.算法原理

4.项目实施步骤

4.1理解数据

4.2数据预处理

4.3探索性数据分析

4.4特征工程

4.5模型构建

4.6模型预测

5.实验总结

源代码


1.项目背景

        随着科技的飞速发展和人们对通讯需求的不断提高,手机已成为现代生活中不可或缺的电子产品。市场上手机品牌众多、型号繁杂,价格也参差不齐,从几百元到上万元不等。对于消费者而言,如何在众多手机中选择适合自己需求和预算的产品成为了一大挑战。

        为了帮助消费者更好地进行手机购买决策,并为企业提供市场定价策略参考,本研究旨在构建一个基于SVM支持向量机算法的手机价格分类预测模型。通过该模型,我们希望能够准确地将手机产品根据其价格划分到不同的类别中,从而为消费者提供一个快速筛选符合预算范围的手机的方法,同时也为企业分析市场竞争格局和制定价格策略提供数据支持。

        SVM作为一种强大的监督学习算法,在处理高维数据、解决非线性分类问题以及防止过拟合等方面具有显著优势。通过选择合适的核函数和调整相关参数,我们相信SVM算法能够在手机价格分类预测问题上取得良好的效果。

2.项目简介

2.1项目说明

        本研究将利用SVM支持向量机算法构建手机价格分类预测模型,旨在为消费者提供便捷的购买决策支持,同时为企业市场分析和定价策略提供有价值的参考信息。

2.2数据说明

        本数据集来源于Kaggle,数据集概述:手机特征的集合,包括电池电量、摄像头规格、网络支持、内存、屏幕尺寸和其他属性。“price_range”列将手机按价格范围进行分类,使该数据集适用于手机分类和价格预测任务。

2.3技术工具

Python版本:3.9

代码编辑器:jupyter notebook

3.算法原理

        支持向量机(Support Vector Machine,简称SVM)是一种常用的监督学习算法,主要用于分类和回归分析。SVM的基本思想是在特征空间中寻找一个最优超平面,使得该超平面能够最大程度地分隔两个类别的样本,并且保证分类的准确性。

SVM算法的原理可以简要概括为以下几个步骤:

  1. 初始化:选择核函数和相关参数,如惩罚系数C、核函数参数等。核函数用于将原始特征空间映射到更高维的特征空间,以解决原始特征空间中的线性不可分问题。
  2. 构建最优超平面:在特征空间中,寻找一个最优超平面,使得两个类别的样本能够最大程度地分隔开。这个最优超平面可以通过最大化间隔(即支持向量到超平面的距离)来实现。
  3. 求解支持向量:在训练过程中,只有少数样本点会决定最优超平面的位置,这些样本点被称为支持向量。支持向量是离分隔超平面最近的点,它们对于分类结果具有决定性的影响。
  4. 决策函数:根据最优超平面和支持向量,构建决策函数。对于新的未知样本,可以将其特征向量代入决策函数中,根据函数值的正负来判断其所属的类别。

        SVM算法具有许多优点,如分类效果好、鲁棒性强、适用于高维数据等。同时,SVM也存在一些不足之处,如对参数敏感、计算复杂度高、难以处理大规模数据等。在实际应用中,需要根据具体的问题和数据特点来选择合适的算法和参数。

4.项目实施步骤

4.1理解数据

导入第三方库并加载数据

查看数据大小

查看数据基本信息

查看描述性统计

4.2数据预处理

统计缺失值情况

结果发现数据不存在缺失值 

检测数据是否存在重复值

结果为False,说明不存在重复值

4.3探索性数据分析

 

4.4特征工程

选择特征变量和目标变量,拆分数据集为训练集和测试集,其中测试集比例为0.3

4.5模型构建

 对比三个模型,可以发现SVM支持向量机的模型准确率最高,达到0.95,模型效果最好,故我们选择其作为最终模型。

4.6模型预测

随机抽取10中错了1个,模型效果还不错。

5.实验总结

  1. 模型有效性:使用SVM算法构建的手机价格分类预测模型是有效的。通过训练集的学习,模型能够较为准确地对手机价格进行分类预测。
  2. 特征选择的重要性:在模型构建过程中,特征选择对于预测精度至关重要。选取与手机价格相关性强的特征(如品牌、配置、屏幕尺寸、电池容量等)能够显著提高模型的预测性能。
  3. 参数优化的影响:SVM算法中的参数(如惩罚系数C和核函数参数γ)对模型性能有显著影响。通过实验发现,通过交叉验证等方法对参数进行优化,可以进一步提高模型的预测精度。
  4. 模型泛化能力:通过对比训练集和测试集的预测结果,发现模型在测试集上的表现略逊于训练集,但整体泛化能力良好。这表明模型对于未知数据的预测能力较强,具有一定的实用价值。
  5. 与其他模型的比较:将SVM模型与其他常见分类算法(如决策树、随机森林、神经网络等)进行比较,发现SVM模型在本实验中具有较高的预测精度和稳定性。这可能是因为SVM对于高维数据的处理能力较强,且对于非线性关系有较好的处理能力。
  6. 模型改进方向:虽然SVM模型在本实验中表现良好,但仍有一定的改进空间。未来可以考虑引入更多的特征、优化特征提取方法、尝试不同的核函数等方法来进一步提高模型的预测性能。

综上所述,基于SVM算法构建的手机价格分类预测模型具有较高的预测精度和实用性,为手机价格预测提供了一种有效的方法。同时,实验过程中也发现了模型改进的方向,为未来的研究提供了参考。

心得与体会:

通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

源代码

数据集概述:手机特征的集合,包括电池电量、摄像头规格、网络支持、内存、屏幕尺寸和其他属性。“price_range”列将手机按价格范围进行分类,使该数据集适用于手机分类和价格预测任务。
# 导入第三方库
import warnings
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
sns.set(font='SimHei')
warnings.filterwarnings('ignore')
# 读取数据
df = pd.read_csv('train.csv')
df.head() # 查看数据前五行
df.shape
df.info()
df.describe()
df.isnull().sum()
any(df.duplicated())
# 按价格范围分配手机
sns.countplot(x=df['price_range'], data=df)
plt.title("Distribution of Phone by Price Range")
plt.ylabel("Total Phone")
plt.show()
# 计数手机有双Sim卡
sns.countplot(x=df['dual_sim'], data=df)
plt.title("Distribution of Phone by Dual SIM")
plt.ylabel("Total Phone")
plt.show()
# 价格范围vs电池功率
sns.boxplot(x=df['price_range'], y=df['battery_power'], data=df)
plt.title("Price Range VS Battery Power")
plt.show()
# 价格范围vs内存
sns.boxplot(x=df['price_range'], y=df['ram'], data=df)
plt.title("Price Range VS RAM")
plt.show()
# 价格范围vs时钟速度
sns.boxplot(x=df['price_range'], y=df['clock_speed'], data=df)
plt.title("Price Range VS Clock Speed")
plt.show()
# 相关系数热力图
plt.figure(figsize=(12,8))
sns.heatmap(df.corr(), cmap='coolwarm')
plt.title("Correlation Heatmap")
plt.show()
# 创建一个特征和目标变量
X = df.drop('price_range', axis=1) 
y = df['price_range']
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 构建逻辑回归模型
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
lr.fit(X_train,y_train)
pred = lr.predict(X_test)
print(accuracy_score(y_test, pred))
print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))
# 构建随机森林模型
from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)
pred = rfc.predict(X_test)
print(accuracy_score(y_test, pred))
print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))
# 构建决策树模型
from sklearn.tree import DecisionTreeClassifier
dt = DecisionTreeClassifier()
dt.fit(X_train, y_train)
pred = dt.predict(X_test)
print(accuracy_score(y_test, pred))
print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))
# 构建SVM支持向量机模型
from sklearn.svm import SVC
svc = SVC()
svc.fit(X_train, y_train)
pred = svc.predict(X_test)
print(accuracy_score(y_test, pred))
print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))
# 模型预测
res = pd.DataFrame()
res['真实值'] = y_test
res['预测值'] = pred
res.sample(10) # 随机抽取10个

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

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

相关文章

Softmax 回归 + 损失函数 + 图片分类数据集【动手学深度学习v2】李沐动手学深度学习课程笔记

目录 Softmax回归 损失函数 图片分类数据集 Softmax回归从零开始实现 Softmax回归简洁实现 Softmax回归 回归和分类的区别 回归问题举例上节课的预测房价问题,分类问题就是对样本进行分类 回归和分类的具体区别 假设真实的类别为第i个类别(值为1&#x…

RK3568 Android12 适配抖音 各大APP

RK3568 Android12 适配抖音 各大APP SOC RK3568 system:Android 12 平台要适配抖音和各大APP 平台首先打开抖音发现摄像头预览尺寸不对只存在右上角,我将抖音APP装在手机上预览,发现是全屏 一开始浏览各大博客 给出的解决方法是修改framework 设置为全屏显示: framewo…

android移动应用开发基础答案,安卓工程师面试题

一线企业的app都是多线程和多进程的,而Android进程间通信机制就是Binder,原生的线程间通信则是Handler,Binder和Handler是了解安卓运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点! 以下几道就是大厂关于…

谷歌seo推广秒收录怎么做?

谷歌SEO推广秒收录想要做到,可以利用我们光算科技独家技术,GSI快速收录,通过技术手段和操作,帮你的网站快速被谷歌发现和记录 这项技术具体核心就是GPC爬虫池系统,这个系统是专门研究谷歌搜索引擎优化的规律和算法创造…

韦东山嵌入式Liunx入门驱动开发三

文章目录 一、GPIO和Pinctrl子系统的使用1-1 Pinctrl子系统1-2 GPIO子系统1-3 基于GPIO子系统的LED驱动程序 本人学习完韦老师的视频,因此来复习巩固,写以笔记记之。 韦老师的课比较难,第一遍不知道在说什么,但是坚持看完一遍&…

SemiDrive E3 MCAL 开发系列(3)– Wdg 模块的使用

一、 概述 本文将会介绍 SemiDrive E3 MCAL Wdg 模块的基本配置,并且会结合实际操作的介绍,帮助新手快速了解并掌握这个模块的使用,文中的 MCAL 是基于 PTG3.0 的版本,开发板是官方的 E3640 网关板。 二、 Wdg 模块的主要配置 …

buuctf_misc_九连环

题目:(一张123456cry.jpg) 这个先直接上kali,图片已改名cry.jpg 在上一篇,我留存了kali文件夹下有"叉"打不开的问题,经查阅,已解决: http://t.csdnimg.cn/bgv4T 输入&a…

浅谈消防设备电源监控系统在某卷烟厂中的应用

彭姝麟 Acrelpsl 1、工程概况 某卷烟厂进行异地技术升级改造,规划新建厂区占地约 120 000m 2 ,新建联合生产工房 49 000m 2 ,动力中心 7 500m 2 ,香精香料库 720m 2 ,片烟醇化库22 500m 2 ,生产指挥中心7 …

docker (十二)-私有仓库

docker registry 我们可以使用docker push将自己的image推送到docker hub中进行共享,但是在实际工作中,很多公司的代码不能上传到公开的仓库中,因此我们可以创建自己的镜像仓库。 docker 官网提供了一个docker registry的私有仓库项目&#…

qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径

qt-C笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径 参考博文: 1.C笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 2.Linux笔记之LD_LIBRARY_PATH详解 3.qt-C笔记之使用QProcess去执行一个可执行文件时指定动态库所存放…

华为HCIP Datacom H12-821 卷3

1.单选题 四台路由器运行 IS-IS 且已经建立邻接关系,区域号和路由器的等级如图中标记,则 R4到达 10.0.2.2/32 的的 Cost 值为多少? A、40 B、10 C、20 D、30 正确答案: D 解析: 由于没有配置路由渗透,所以R4会选择…

springboot-基础-eclipse配置+helloword示例

备份笔记。所有代码都是2019年测试通过的,如有问题请自行搜索解决! 下一篇:springboot-基础-添加model和controller的简单例子常用注解含义 目录 配置helloword示例新建项目创建文件 配置 spring boot官方有定制版eclipse,也就是…

主数据管理是数字化转型成功的基石——江淮汽车案例分享

汽车行业数字化转型的背景 在新冠疫情导火索的影响下,经济全球化政治基础逐渐动摇。作为全球最大的汽车市场,我国的汽车市场逐渐由增量转为存量市场。 在数字化改革大背景下,随着工业4.0时代的到来,江淮汽车集团力争实现十四五数…

Java的运行机制与Java开发环境的搭建

1.编译和执行 首先通过文本编辑器编写源程序(后缀为.java),再利用编译器编译成字节码文件(后缀为.class),最后利用虚拟机也叫解释器解释执行。 2.JVM、JRE和JDK的区别 简单来说, ①JVM 提供了运行 Java 程…

小狐狸chat2.7.2免授权修复版可用版

小狐狸chat2.7.2免授权修复版可用版 在网络上面找了好几个版本不能使用,今天发布这个仔细测试正常使用 主要功能:独立版无限多开支持分销会员充值自己APP打包小程序万能创作MJ绘图多个国内接口 国外很火的ChatGPT,这是一种基于人工智能技术…

百度SEO工具,自动更新网站的工具

在网站SEO的过程中,不断更新网站内容是提升排名和吸引流量的关键之一。而对于大多数网站管理员来说,频繁手动更新文章并进行SEO优化可能会是一项繁琐且耗时的任务。针对这一问题,百度自动更新文章SEO工具应运而生,它能够帮助网站管…

【EI会议征稿通知】第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)

第五届计算机信息和大数据应用国际学术会议(CIBDA 2024) 2024 5th International Conference on Computer Information and Big Data Applications 第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)将于2024年3月22-24日在…

5G时代对于工业化场景应用有什么改善

5G 不仅仅是 4G 的技术升级,而是将平板电脑和智能手机的技术升级。除了更好的高清视频流和其他高带宽应用,消费者不会注意到很多性能差异。然而,在工业领域,5G 代表着巨大的飞跃。 在工厂和厂房内, 设备的Wi-Fi 网络经…

2024年工控人职场求生之路

2024年,眼看项目多了活儿忙了 工控工程师们开始上演飞驰人生 不是跑去客户那里调设备 就是在电脑上搭项目做画面搭系统 每天都过热辣滚烫 你说忙吧,每天也就干那些事儿 你说多有成就感呐 我觉得我能有绝对的主导权和话语权 那都是天方夜谭 2024年…

php 把数字转化为大写中文

1. 120002129.25 转化后壹億贰仟萬贰仟壹佰贰拾玖圆贰角伍分2. 12000.2145 转化后壹萬贰仟圆贰角壹分肆厘伍毫3. 1020001211 转化后壹拾億贰仟萬壹仟贰佰壹拾壹圆整大致思路这样的: 从小数点分割成两部分,整数部分和小数部分分别处理。 整数四个一组进行处理,用substr函数分…