【python】python基于机器学习与数据分析的二手手机特性关联与分类预测(源码+数据集)【独一无二】
👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
python基于机器学习与数据分析的二手手机特性关联与分类预测(源码+数据集)【独一无二】
目录
- python基于机器学习与数据分析的二手手机特性关联与分类预测(源码+数据集)【独一无二】
- 一、设计要求
- 二、设计思路
- **1. 数据读取与预处理**
- **2. 描述性统计与分布分析**
- **3. 分类变量分布分析**
- **4. 热力图分析(RAM与内核搭配特征)**
- **5. 线性回归模型**
- **6. 聚类分析**
- 三、可视化分析
一、设计要求
本项目的目标是分析智能手机数据,揭示其特性与价格区间的联系,并利用机器学习技术进行预测和聚类。设计涵盖数据预处理、探索性分析、模型构建与性能评估:
-
数据预处理
- 读取多个数据源,清理缺失值、重复值和异常值。
- 新增业务特征 “屏幕尺寸”,提升数据分析深度。
-
数据分析与可视化
- 基于核心数值特征(如手机重量、电池容量等)进行统计特征分析。
- 利用饼图、直方图、热力图等方式展现变量分布和关联。
-
监督学习
- 应用线性回归模型预测价格区间(连续变量)。
- 使用 SVM 进行价格区间分类,并分析特征重要性。
-
无监督学习
- 对手机特性进行聚类分析,揭示潜在分组模式。
- 利用肘部法选择最佳聚类数,并评估聚类效果(轮廓系数等)。
-
可视化与解读
- 通过高质量图表展示分析结果,为决策提供支持。
- 输出模型性能指标(如准确率、决定系数)并解释结果的商业意义。



二、设计思路
1. 数据读取与预处理
目的:
- 利用
pandas读取 Excel 文件,合并数据集,并进行清洗与扩展,以生成干净、可信的数据供后续使用。
关键环节:
- 加载两个 Excel 数据集。
- 检查缺失值并填充(使用
bfill策略填充)。 - 删除重复数据行。
- 删除特定非法值(如
m_dep非正数的非法行)。 - 创建业务衍生字段 “屏幕尺寸”,计算公式为屏幕宽高的欧几里得长度。
import pandas as pd# 读取 Excel 文件
file1 = "phone1.xlsx"
file2 = "phone2.xlsx"# 使用 openpyxl 引擎读取数据
df1 = pd.read_excel(file1, engine='openpyxl')
df2 = pd.read_excel(file2, engine='openpyxl')# 合并数据集
merged_df = pd.concat([df1, df2], ignore_index=True)# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行# 新增字段“屏幕尺寸”
if 'px_height' in merged_df.columns and 'px_width' in merged_df.columns:merged_df['屏幕尺寸'] = (merged_df['px_height']**2 + merged_df['px_width']**2) ** 0.5
核心作用:
- 数据预处理旨在防止后续分析因数据空值、重复值或非法值而产生报错或异常结果。
- “屏幕尺寸” 字段的添加是基于业务逻辑拓展的重要步骤,为模型提供了额外的特征支持。
2. 描述性统计与分布分析
目的:
- 对特定数值变量(如
mobile_wt、battery_power)进行数据分布的探索,以及统计特征(均值、中位数、众数)的提取。
代码实现:
- 显示均值、中位数和众数:
# 核心数值特征的统计描述
print("描述性统计分析 - 手机基本属性")
for col in ['mobile_wt', 'battery_power', 'pc']:if col in merged_df.columns:
# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行mode = merged_df[col].mode()[0] if not merged_df[col].mode().empty else Noneprint(f"{col} - 平均值: {mean:.2f}, 中位数: {median}, 众数: {mode}")
- 绘制数据分布:
通过直方图 + 核密度估计展示数据分布,便于判断变量的分布是否对称,是否存在偏态。

import matplotlib.pyplot as plt# 分布特征:带核密度估计的直方图
fig, axes = plt.subplots(3, 1, figsize=(8, 12))for i, col in enumerate(['mobile_wt', 'battery_power', 'pc']):if col in merged_df.columns:axes[i].hist(merged_df[col], bins=20, density=True, alpha=0.6, label=f'{col}直方图')merged_df[col].plot.kde(ax=axes[i], color='red', label=f'{col}核密度估计')
# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行axes[i].legend()plt.tight_layout()
输出如下:
- 从分布图可以直观查看特征数据的分布形状:
- 若为双峰形态或偏态分布,可考虑使用对数变换等手段消除偏态。
- 若为近似正态分布,则适合直接用于建模。
3. 分类变量分布分析
目的:
- 分析手机特征(如是否支持双卡、是否支持 4G)的类别分布,展示百分比占比。
代码实现:
- 利用饼状图显示不同类别型特征的分布比例。
# 分类特征分布分析 - 饼图
categorical_cols = ['dual_sim', 'four_g', 'three_g', 'touch_screen']for col in categorical_cols:if col in merged_df.columns:# 统计频数value_counts = merged_df[col].value_counts(normalize=True) * 100 # 计算百分比labels = value_counts.index.map(lambda x: f"{x} ({value_counts[x]:.2f}%)")
# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行plt.show()
特点:
- 各类别的比例直接反映了特征倾斜性。例如,若
dual_sim中某类占比远超50%,则该变量可能对模型贡献不足。

4. 热力图分析(RAM与内核搭配特征)
目的:
- 使用交叉表和热力图分析不同运行内存与核心数的分布特征,观察变量是否存在某种偏好模式。
代码实现:
import seaborn as sns# RAM、内核分组后统计频次,绘制热力图
# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行plt.figure(figsize=(8, 6))
sns.heatmap(group_counts, annot=True, fmt="d", cmap="YlGnBu")
plt.title("运行内存与内核分组统计热力图")
plt.xlabel("处理器内核数分组")
plt.ylabel("运行内存分组")
plt.show()
分析:
- 热力图便于观察分组统计结果。若某些分组对应的频数特别高,表明这些分组有更高的用户偏好或商业价值。
5. 线性回归模型
目的:
- 预测
price_range,并解读特征对价格的线性贡献。
代码实现:
- 建模:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score# 提取特征及目标变量
X = merged_df[['battery_power', 'ram', 'n_cores']] # 自变量
# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行# 数据集拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 线性回归模型
model = LinearRegression()
# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行# 模型评估
print("线性回归模型的系数:", model.coef_)
print("线性回归模型的截距:", model.intercept_)
# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行
print(f"均方误差(MSE):{mse:.2f}")
print(f"决定系数(R²):{r2:.2f}")
- 分析结果:
- 若 R² 接近 1,说明模型有较强的拟合能力。
- 若某些特征系数(
model.coef_)的值很小或负数,表明这些特征对预测贡献甚微或为负面影响。

6. 聚类分析
目的:
- 用无监督学习了解手机特性分组行为。
代码实现:
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler# 特征标准化
features = merged_df[['px_height', 'px_width', '屏幕尺寸', 'four_g']].copy()
scaler = StandardScaler()
scaled_features = scaler.fit_transform(features)# K 均值聚类分析
optimal_k = 4
# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行
features['Cluster'] = clusters# 聚类评价
from sklearn.metrics import silhouette_score
# 代码略...至少10行
# 代码略...至少10行
# 代码略...至少10行
print(f"轮廓系数 (Silhouette Score): {silhouette_avg:.2f}")
输出:
- 聚类标签反映了不同组群手机可能对应的特性偏好。
这段代码从数据清洗到回归、分类和聚类,每一步都设计得合理、高效,且充分考虑了数据和任务特点,为分析智能设备提供了系统支持。
三、可视化分析



















相关文章:
【python】python基于机器学习与数据分析的二手手机特性关联与分类预测(源码+数据集)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 python基于机器学习与数据分析的二手手机特性关联与…...
WPF进阶 | WPF 数据绑定进阶:绑定模式、转换器与验证
WPF进阶 | WPF 数据绑定进阶:绑定模式、转换器与验证 一、前言二、WPF 数据绑定基础回顾2.1 数据绑定的基本概念2.2 数据绑定的基本语法 三、绑定模式3.1 单向绑定(One - Way Binding)3.2 双向绑定(Two - Way Binding)…...
java.util.Random类(详细案例拆解)(已完结)
前言: 小编打算近期更俩三期类的专栏,一些常用的专集类,给大家分好类别总结和详细的代码举例解释。 今天是除夕,小编先祝贺大家除夕快乐啦!! 今天是第六个 java.lang.Math 包中的 java.util.Random类 我…...
【数据结构】动态内存管理函数
动态内存管理 为什么存在动态内存管理动态内存函数的介绍🎊malloc补充:perror函数🎊free🎊calloc🎊realloc 常见动态内存错误对空指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一…...
TVM框架学习笔记
TVM是陈天齐等人一个开源的深度学习编译器栈,用于优化和部署机器学习模型到各种硬件后端。它支持多种前端框架,如TensorFlow、PyTorch、ONNX等,并且可以在不同的硬件平台上运行,包括CPU、GPU和专用加速器。官方文档: Apache TVM Documentation — tvm 0.20.dev0 documenta…...
neo4j-community-5.26.0 install in window10
在住处电脑重新配置一下neo4j, 1.先至官方下载 Neo4j Desktop Download | Free Graph Database Download Neo4j Deployment Center - Graph Database & Analytics 2.配置java jdk jdk 21 官网下载 Java Downloads | Oracle 中国 path: 4.查看java -version 版本 5.n…...
macbook安装go语言
通过brew来安装go语言 使用brew命令时,一般都会通过brew search看看有哪些版本 brew search go执行后,返回了一堆内容,最下方展示 If you meant "go" specifically: It was migrated from homebrew/cask to homebrew/core. Cas…...
LCD液晶屏的工作原理以及背光模组
LCD液晶屏的工作原理以及背光模组 液晶屏工作原理 像素点的主要结构背光模组 LCD液晶屏主要由两部分组成,液晶屏和背光模组。背光模组提供均匀稳定的光源,液晶屏控制光线的传播路径,是屏幕显示设定的图像。 液晶屏 LCD的核心是两片玻璃之间…...
es数据同步
Logstash 是 Elastic 技术栈中的一个技术,它是一个数据采集引擎,可以从数据库采集数据到 ES 中。可以通过设置 自增 ID 主键 或 更新时间 来控制数据的自动同步: 自增 ID 主键:Logstatsh 会有定时任务,如果发现有主键…...
maven的打包插件如何使用
默认的情况下,当直接执行maven项目的编译命令时,对于结果来说是不打第三方包的,只有一个单独的代码jar,想要打一个包含其他资源的完整包就需要用到maven编译插件,使用时分以下几种情况 第一种:当只是想单纯…...
【Elasticsearch】中数据流需要配置索引模板吗?
是的,数据流需要配置索引模板。在Elasticsearch中,数据流(Data Streams)是一种用于处理时间序列数据的高级结构,它背后由多个隐藏的索引组成,这些索引被称为后备索引(Backing Indices࿰…...
Controller 层优化四步曲
Controller 层优化四步曲 前言 在开发过程中,Controller 层作为系统与外界交互的桥梁,承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而,随着业务复杂度的增加,Controller 层的代码往往会变得臃肿且难以维护。 …...
Java后端之AOP
AOP:面向切面编程,本质是面向特定方法编程 引入依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>示例:记录…...
中文输入法方案
使用了三年的自然码双拼,毫无疑问是推荐使用双拼输入法。 三年积累下来的习惯是: 1 自然码方案 2 空格出字 字母选字 直到如今,想要做出改变,是因为这样的方案带来的痛点: 1 使用空格出字就无法使用辅助码&#…...
Elasticsearch中的度量聚合:深度解析与实战应用
在大数据和实时分析日益重要的今天,Elasticsearch以其强大的搜索和聚合能力,成为了众多企业和开发者进行数据分析和处理的首选工具。本文将深入探讨Elasticsearch中的度量聚合(Metric Aggregations),展示其如何在数据分…...
Julius AI 人工智能数据分析工具介绍
Julius AI 是一款由 Casera Labs 开发的人工智能数据分析工具,旨在通过自然语言交互和强大的算法能力,帮助用户快速分析和可视化复杂数据。这款工具特别适合没有数据科学背景的用户,使数据分析变得简单高效。 核心功能 自然语言交互&#x…...
乌兰巴托的夜---音乐里的故事
不知道你有没有听过《乌兰巴托的夜》。 《乌兰巴托的夜Ulaanbaatariin udesh》其实是蒙古国的流行歌曲,1980年代创作,以蒙古国首都乌兰巴托(Ulaanbaatar)的夜晚为背景,表现恋爱中的男女青年爱情的抒情小夜曲ÿ…...
机器学习day4
自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测 import numpy as np import torch import torch.nn as nn import torch.optim as optimizer import matplotlib.pyplot as pltclass1_points np.array([[2.1, 1.8],[1.9, 2…...
LVGL+FreeRTOS实战项目:智能健康助手(蓝牙模块篇)
HC-05 蓝牙模块简介 功能:支持串口通信的蓝牙模块,广泛应用于无线数据传输。支持 AT 指令配置。 接口:UART 通信,默认波特率为 9600bps。 应用:无线调试、数据传输、无线控制等。 硬件连接 HC-05 引脚功能STM32 连…...
如何部署 Flask 应用程序到生产环境?
在生产环境中部署 Flask 应用程序需要考虑稳定性、安全性、可扩展性和性能。以下是 Flask 应用的常见生产部署方法及最佳实践: 1. 选择部署方式 常见的 Flask 生产环境部署方式包括: 部署方式适用场景说明Gunicorn Nginx适合中小型项目轻量级…...
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》029-组件的数据注入
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…...
Redis学习之哨兵二
一、API 1.sentinel masters:展示被监控的主节点状态及相关的统计信息 2.sentinel master <master name>:展示指定的主节点的状态以及相关的统计信息 3.sentinel slaves <master name>:展示指定主节点的从节点状态以及相关的统计信息 4.sentinel sentinels <mas…...
【Linux基础指令】第二期
本期博客的主题依旧是 "基础指令" ; 上一期的基础指令链接: 【Linux基础指令】第一期-CSDN博客 ,话不多说,正文开始: 一、Linux的指令 1.cp 拷贝功能: cp [stc] [dest] # 将 src文件 拷贝到…...
SpringBoot的细节问题
一、重点填空 Pivotal 团队在原有 spring 框架的基础上开发了全新的Spring Boot框架。Spring Boot框架在开发过程中大量使用 约定优于配置 的思想来摆脱框架中各种复杂的手动配置。Spring Boot 2.1.3版本要求 Java 8 及以上版本的支持。Spring Boot2.1.3版本框架官方声明支持的…...
JavaScript系列(46)-- WebGL图形编程详解
JavaScript WebGL图形编程详解 🎨 今天,让我们深入探讨JavaScript的WebGL图形编程。WebGL是一种基于OpenGL ES的JavaScript API,它允许我们在浏览器中渲染高性能的2D和3D图形。 WebGL基础概念 🌟 💡 小知识ÿ…...
MySQL(表空间)
开始前先打开此图配合食用 MySQL表空间| ProcessOn免费在线作图,在线流程图,在线思维导图 InnoDB 空间文件中的页面管理 后面也会持续更新,学到新东西会在其中补充。 建议按顺序食用,欢迎批评或者交流! 缺什么东西欢迎评论!我都…...
C26.【C++ Cont】动态内存管理和面向对象的方式实现链表
🧨🧨🧨🧨🧨🧨🧨🧨🧨除夕篇🧨🧨🧨🧨🧨🧨🧨🧨🧨 目录 1.知识回顾…...
使用numpy自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预
1. 引言 逻辑回归(Logistic Regression)是一种常见的分类算法,广泛应用于二分类问题。在本篇博客中,我们将使用numpy生成一个简单的自定义数据集,并使用TensorFlow框架构建和训练逻辑回归模型。训练完成后,…...
Java Web 开发基础介绍
Java学习资料 Java学习资料 Java学习资料 一、引言 在当今数字化时代,Web 应用无处不在。Java 凭借其强大的功能、良好的跨平台性和丰富的开发框架,成为 Web 开发领域的热门选择之一。Java Web 开发允许开发者构建动态、交互式的 Web 应用程序&#x…...
求解旅行商问题的三种精确性建模方法,性能差距巨大
文章目录 旅行商问题介绍三种模型对比求解模型1决策变量目标函数约束条件Python代码 求解模型2决策变量目标函数约束条件Python代码 求解模型3决策变量目标函数约束条件Python代码 三个模型的优势与不足 旅行商问题介绍 旅行商问题 (Traveling Salesman Problem, TSP) 是一个经…...

