【python】python基于机器学习与数据分析的二手手机特性关联与分类预测(源码+数据集)【独一无二】

embedded/2025/2/1 8:45:21/

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


python_11">python基于机器学习数据分析的二手手机特性关联与分类预测(源码+数据集)【独一无二】


目录

  • python基于机器学习数据分析的二手手机特性关联与分类预测(源码+数据集)【独一无二】
  • 一、设计要求
  • 二、设计思路
      • **1. 数据读取与预处理**
      • **2. 描述性统计与分布分析**
      • **3. 分类变量分布分析**
      • **4. 热力图分析(RAM与内核搭配特征)**
      • **5. 线性回归模型**
      • **6. 聚类分析**
  • 三、可视化分析


一、设计要求

本项目的目标是分析智能手机数据,揭示其特性与价格区间的联系,并利用机器学习技术进行预测和聚类。设计涵盖数据预处理、探索性分析、模型构建与性能评估:

  1. 数据预处理

    • 读取多个数据源,清理缺失值、重复值和异常值。
    • 新增业务特征 “屏幕尺寸”,提升数据分析深度。
  2. 数据分析与可视化

    • 基于核心数值特征(如手机重量、电池容量等)进行统计特征分析。
    • 利用饼图、直方图、热力图等方式展现变量分布和关联。
  3. 监督学习

    • 应用线性回归模型预测价格区间(连续变量)。
    • 使用 SVM 进行价格区间分类,并分析特征重要性。
  4. 无监督学习

    • 对手机特性进行聚类分析,揭示潜在分组模式。
    • 利用肘部法选择最佳聚类数,并评估聚类效果(轮廓系数等)。
  5. 可视化与解读

    • 通过高质量图表展示分析结果,为决策提供支持。
    • 输出模型性能指标(如准确率、决定系数)并解释结果的商业意义。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


二、设计思路

1. 数据读取与预处理

目的:

  • 利用 pandas 读取 Excel 文件,合并数据集,并进行清洗与扩展,以生成干净、可信的数据供后续使用。

关键环节:

  • 加载两个 Excel 数据集。
  • 检查缺失值并填充(使用bfill策略填充)。
  • 删除重复数据行。
  • 删除特定非法值(如 m_dep 非正数的非法行)。
  • 创建业务衍生字段 “屏幕尺寸”,计算公式为屏幕宽高的欧几里得长度。
python">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_wtbattery_power)进行数据分布的探索,以及统计特征(均值、中位数、众数)的提取。

代码实现:

  • 显示均值、中位数和众数:
python"># 核心数值特征的统计描述
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}")
  • 绘制数据分布:
    通过直方图 + 核密度估计展示数据分布,便于判断变量的分布是否对称,是否存在偏态。
    在这里插入图片描述
python">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)的类别分布,展示百分比占比。

代码实现:

  • 利用饼状图显示不同类别型特征的分布比例。
python"># 分类特征分布分析 - 饼图
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与内核搭配特征)

目的:

  • 使用交叉表和热力图分析不同运行内存与核心数的分布特征,观察变量是否存在某种偏好模式。

代码实现:

python">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,并解读特征对价格的线性贡献。

代码实现:

  • 建模:
python">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. 聚类分析

目的:

  • 用无监督学习了解手机特性分组行为。

代码实现:

python">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}")

输出:

  • 聚类标签反映了不同组群手机可能对应的特性偏好。

这段代码从数据清洗到回归、分类和聚类,每一步都设计得合理、高效,且充分考虑了数据和任务特点,为分析智能设备提供了系统支持。


三、可视化分析

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

---


http://www.ppmy.cn/embedded/158581.html

相关文章

Pyecharts之地图图表的强大功能

在数据可视化领域中,地图图表是一种强大的工具,能够直观地展现与地理位置相关的数据信息,帮助我们更好地洞察数据的地域特征和分布规律。Pyecharts 为我们提供了丰富的地图图表功能,让我们可以轻松实现各种地理信息的可视化展示。…

鸿蒙开发在onPageShow中数据加载不完整的问题分析与解决

API Version 12 1、onPageShow()作什么的 首先说明下几个前端接口的区别: ArkUI-X的aboutToAppear()接口是一个生命周期接口,用于在页面即将显示之前调用。 在ArkUI-X中,aboutToAppear()接口是一个重要的生命周期接口,它会在页…

SOME/IP--协议英文原文讲解2

前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.1 Speci…

TCP 握手数据包分析

一、客户端数据分析: spuspu:~/code/pcap$ tcpdump -r client_all.pcap -X reading from file client_all.pcap, link-type EN10MB (Ethernet) 17:58:56.346748 IP 192.168.1.178.55814 > 192.168.1.117.socks: Flags [S], seq 2615205588, win 64240, options …

全面了解 Web3 AIGC 和 AI Agent 的创新先锋 MelodAI

不管是在传统领域还是 Crypto,AI 都是公认的最有前景的赛道。随着数字内容需求的爆炸式增长和技术的快速迭代,Web3 AIGC(AI生成内容)和 AI Agent(人工智能代理)正成为两大关键赛道。 AIGC 通过 AI 技术生成…

渗透测试之WAF规则触发绕过规则之规则库绕过方式

目录 Waf触发规则的绕过 特殊字符替换空格 实例 特殊字符拼接绕过waf Mysql 内置得方法 注释包含关键字 实例 Waf触发规则的绕过 特殊字符替换空格 用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格 这个方法也可以部分绕过最新版本的…

计算机网络一点事(24)

TCP可靠传输,流量控制 可靠传输:每字节对应一个序号 累计确认:收到ack则正确接收 返回ack推迟确认(不超过0.5s) 两种ack:专门确认(只有首部无数据) 捎带确认(带数据…

.Net / C# 繁体中文 与 简体中文 互相转换, 支持地方特色词汇

版本号 Nuget 搜索 “OpenCCNET”, 注意别找错, 好多库的名字都差不多 支持 “繁,简” 的互相转换, 支持多个地区常用词汇的转换, 还支持 日文的新旧转换. OpenCC 在 .Net 中的实现 https://github.com/CosineG/OpenCC.NET <PackageReference Include"OpenCCNET"…