python数据分析-基于数据挖掘对APP评分的预测

前言

当我们谈论关于APP用户分析与电子商务之间的联系时,机器学习在这两个领域的应用变得至关重要。App用户分析和电子商务之间存在着密切的关联,因为用户行为和偏好的深入理解对于提高用户体验、增加销售以及优化产品功能至关重要。故本文基于K-近邻模型、贝叶斯模型和自适应提升模型对:基于已爬取的APP数据(例如:APP类型、APP安装人数、APP评论内容等等)的分析来预测该APP是否为一个好的APP。

数据介绍与预处理

从前,手机app少,但经典,现在,app多了,但混杂(多仿品),有很多因素影响用户去下载app,评分就是很重要的参考。那么问题来了:在无法参透某平台app评分算法的奥义之前,能否预测一下app的评分呢(简化之,app好评是1,差评为0)?

train.csv:训练集,7728 rows × 10 columns, 列属性包含:App, Category, Reviews, Size, Installs(安装量), Type, Price, ContentRating(评论的人员), Last Updated(上次更新的日期), Y(是否为好评,1为好评,0为非好评), 行为7728个APP样本。

首先导入数据分析必要的包:

随后通过发现有的特征数据格式或者单位没有统一,特征变量全部为object,故要做进一步处理。

针对“Size”变量的单位不统一的原因,故定义一个条件判断函数,将其单位统一:

观察变量,继续进行预处理:

处理完成之后再次查看数据情况:

随后进行描述性统计分析

从上图中可以看出,对于训练集的和测试集描述性统计,对各个特征变量的计数、均值、标准差、最大最小值,以及分位数均进行了展示。

随后推断数据类型,让数据更规范以及查看数据的基础信息,结果如下(仍是以训练数据集为例),这一步是为了对特征分析和模型建立作准备。

接下来对数据缺失值进行确认,首先导入缺失值可视化missingno包,该包可以很直观的看出每个特征的缺失程度,故可以很好的对特征进行筛选,可视化结果如下,在每个特征中白色越多就表明数据越缺失。由于在上文中在进行了数据缺失值的处理,故在下面的可视化中只是更直观的确认一下训练集和测试集(测试集在此不作展示)中是否还有缺失值的存在。

然后需要对数据进一步细化处理,要把数据分为数值型和其他类型来看。分布进行处理,例如对于分类型变量,则通过独热编码进行处理。

首先查看数值型变量数据:

填充缺失值,缺失值有很多填充方式,可以用中位数,均值,众数。也可以就采用那一行前面一个或者后面一个有效值去填充空的。

通过探索性数据分析,我们对字符类型特征值与数字类型特征值与Y的关系有了较深的了解,同时观察到投资收入与投资损失的数据特征,因此在进行模型构造前,首先需要对特征值进行一定的处理以实现机器学习算法的高效利用。

在处理完特征变量之后,对响应变量的分布也要考察,若存在异常值的情况也会对模型的泛化能力有影响,在此画出响应变量的箱线图、直方图和和核密度图,如下图:

随后对特征变量进行相关系数的计算以及热力图的展示,如下图:

机器学习预测

选取数据集的80%为训练集,20%为测试集进行下一步的预测与检验,为了保证程序每次运行都分割一样的训练集和测试集,设置random_state为0。

结论

本文基于探索性数据分析对APP评分的预测问题进行数据加载、数据清洗以及数据可视化操作。其中预处理包括处理数据的格式问题,以及统一数据的单位,填充数据的缺失值问题,通过数据预处理工作之后,整体数据变为较为整洁。上述数据分析完成了机器学习中的数据预处理部分,数据分析所得结论具有应用意义。....
部分代码
 

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['KaiTi']  #中文
plt.rcParams['axes.unicode_minus'] = False   #负号df=pd.read_csv('train.csv') 
df.head()
df.info()df=df.fillna(method='pad')  #前一个有效值进行填充
df.loc[df[df['Type']=='0'].index,'Type']=df['Type'].mode()   #异常值使用众数填充def check(x):if "M" in str(x):x = float(str(x).replace("M", "")) * 1000000elif "K" in str(x):x = float(str(x).replace("K", "")) * 1000elif "k" in str(x):x = float(str(x).replace("k", "")) * 1000elif "Varies with device" in str(x):x = 0else:return float(x)return x/1000y.value_counts(normalize=True)# 查看y的分布
#分类问题
plt.figure(figsize=(4,2),dpi=128)
plt.subplot(1,2,1)
y.value_counts().plot.bar(title='响应变量柱状图图')
plt.subplot(1,2,2)
y.value_counts().plot.pie(title='响应变量饼图')
plt.tight_layout()
plt.show()#查看特征变量的箱线图分布
dis_cols = 3                   #一行几个
dis_rows = 2
plt.figure(figsize=(3*dis_cols, 2*dis_rows),dpi=128)
for i in range(5):plt.subplot(dis_rows,dis_cols,i+1)sns.kdeplot(X[X.columns[i]], color="tomato" ,shade=True)#plt.xlabel((y.unique().tolist()),fontsize=12)plt.ylabel(df.columns[i], fontsize=18)
plt.tight_layout()
plt.show()#贝叶斯
model1 = BernoulliNB(alpha=1)
#K近邻
model2 = DecisionTreeClassifier()
#自适应提升Adaboost
model3 = RandomForestClassifier(n_estimators=1000,  max_features='sqrt',random_state=123)model_list=[model1,model2,model3]
model_name=['二项朴素贝叶斯(伯努利)','决策树','随机森林']

数据和代码

数据代码和分析报告

创作不易,希望大家多多点赞收藏和评论!

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

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

相关文章

OFDM 802.11a的FPGA实现(二十)使用AXI-Stream FIFO进行跨时钟(含代码)

目录 1.前言 2.AXI-Stream FIFO时序 3.AXI-Stream FIFO配置信息 4.时钟控制模块MMCM 5.ModelSim仿真 6.总结 1.前言 至此,通过前面的文章讲解,对于OFDM 802.11a的发射基带的一个完整的PPDU帧的所有处理已经全部完成,其结构如下图所示&…

opencv-C++ VS2019配置安装

最新opencv-c安装及配置教程(VS2019 C & opencv4.4.0)_c opencv配置-CSDN博客

夜雨触花感怀

夜雨触花感怀 雨落有轨迹,业成无坦途。 ​鸡毛飞虚空,寻德问心路。 ​恰如求耕耘,大话量寸土。 ​好吃品五味,难得评真俗。

CAN总线简介

1. CAN总线概述 1.1 CAN定义与历史背景 CAN,全称为Controller Area Network,是一种基于消息广播的串行通信协议。它最初由德国Bosch公司在1983年为汽车行业开发,目的是实现汽车内部电子控制单元(ECUs)之间的可靠通信。…

用Vuex存储可配置下载的ip地址(用XML进行ajax请求配置文件)

1.在public文件夹下创建一个名为Configuration的文件在创建一个Configuration.txt里面就放IP地址(这里的名字可以随便命名一定性的被人解读文件含义) 例如: http://172.171.208.1:80032.在store文件夹中创建一个名为 ajaxModule.js 的 Vuex …

2. CSS选择器与伪类

2.1 基本选择器回顾 在开始介绍CSS3选择器之前&#xff0c;我们先回顾一下CSS的基本选择器。这些选择器是所有CSS开发的基础。 2.1.1 元素选择器 元素选择器用于选中指定类型的HTML元素。 /* 选中所有的<p>元素 */ p {color: blue; }2.1.2 类选择器 类选择器用于选中…

03自动辅助导航驾驶NOP其实就是NOA

蔚来NOP是什么意思&#xff1f;蔚来NOP是啥 蔚来NOP的意思就是NavigateonPilot智能辅助导航驾驶&#xff0c;也就是大家俗称的高阶辅助驾驶&#xff0c;在车主设定好导航路线&#xff0c;并且符合开启NOP条件的前提下&#xff0c;蔚来NOP可以代替驾驶员完成从A点到B点的智能辅助…

深入理解数仓开发(二)数据技术篇之数据同步

1、数据同步 数据同步我们之前在数仓当中使用了多种工具&#xff0c;比如使用 Flume 将日志文件从服务器采集到 Kafka&#xff0c;再通过 Flume 将 Kafka 中的数据采集到 HDFS。使用 MaxWell 实时监听 MySQL 的 binlog 日志&#xff0c;并将采集到的变更日志&#xff08;json 格…

【二叉树】:LeetCode:100.相同的数(分治)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;初阶初阶结构刷题 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 1.问题描述&#xff1a; 2.问题分析&#xff1a; 二叉树是区分结构的&#xff0c;即左右子树是不一…

[JDK工具-6] jmap java内存映射工具

文章目录 1. 介绍2. 主要选项3. 生成java堆转储快照 jmap -dump4. 显示堆详细信息 jmap -heap pid5. 显示堆中对象统计信息 jmap -histo pid jmap(Memory Map for Java) 1. 介绍 位置&#xff1a;jdk\bin 作用&#xff1a; jdk安装后会自带一些小工具&#xff0c;jmap命令(Mem…

PySide6升级导致的Fatal Python error: could not initialize part 2问题及其解决方法

问题出现 把PySide6从6.6.1升级到6.7.1&#xff0c;结果运行程序的时候就报如下错误&#xff1a; Traceback (most recent call last): File "signature_bootstrap.py", line 77, in bootstrap File "signature_bootstrap.py", line 93, in find_inc…

Kafka SASL_SSL集群认证

背景 公司需要对kafka环境进行安全验证,目前考虑到的方案有Kerberos和SSL和SASL_SSL,最终考虑到安全和功能的丰富度,我们最终选择了SASL_SSL方案。处于知识积累的角度,记录一下kafka SASL_SSL安装部署的步骤。 机器规划 目前测试环境公搭建了三台kafka主机服务,现在将详…

H3CNE-7-TCP和UDP协议

TCP和UDP协议 TCP&#xff1a;可靠传输&#xff0c;面向连接 -------- 速度慢&#xff0c;准确性高 UDP&#xff1a;不可靠传输&#xff0c;非面向连接 -------- 速度快&#xff0c;但准确性差 面向连接&#xff1a;如果某应用层协议的四层使用TCP端口&#xff0c;那么正式的…

智能家居完结 -- 整体设计

系统框图 前情提要: 智能家居1 -- 实现语音模块-CSDN博客 智能家居2 -- 实现网络控制模块-CSDN博客 智能家居3 - 实现烟雾报警模块-CSDN博客 智能家居4 -- 添加接收消息的初步处理-CSDN博客 智能家居5 - 实现处理线程-CSDN博客 智能家居6 -- 配置 ini文件优化设备添加-CS…

【MySQL】聊聊count的相关操作

在平时的操作中&#xff0c;经常使用count进行操作&#xff0c;计算统计的数据。那么具体的原理是如何的&#xff1f;为什么有时候执行count很慢。 count的实现方式 select count(*) from student;对于MyISAM引擎来说&#xff0c;会把一个表的总行数存储在磁盘上&#xff0c;…

Linux下Vision Mamba环境配置+多CUDA版本切换

上篇文章大致讲了下Vision Mamba的相关知识&#xff0c;网上关于Vision Mamba的配置博客太多&#xff0c;笔者主要用来整合下。 笔者在Win10和Linux下分别尝试配置相关环境。 Win10下配置 失败 \textcolor{red}{失败} 失败&#xff0c;最后出现的问题如下&#xff1a; https://…

基于物联网架构的电子小票服务系统

1.电子小票物联网架构 采用感知层、网络层和应用层的3层物联网体系架构模型&#xff0c;电子小票物联网的架构见图1。 图1 电子小票物联网架构 感知层的小票智能硬件能够取代传统的小票打印机&#xff0c;在不改变商家原有收银系统的前提下&#xff0c;采集收音机待打印的购物…

react中的数据驱动视图,useState()的使用

前端开发如今有一个很重要的思想就是数据驱动视图&#xff0c;数据发生变化使ui发生变化&#xff0c;比如一个变量count&#xff0c;为0显示三个按钮&#xff0c;为1显示一个按钮&#xff0c;为2显示两个按钮。这就是一个简单的数据驱动视图。 import { useState } from reactf…

修改 ant design tour 漫游式导航的弹窗边框样式

一 说明 应项目要求&#xff0c;调整ant design tour 弹窗边框的样式。tour 原本样式是有遮罩层&#xff0c;因此没有边框看起来也不突兀。原图如下&#xff1a; 但是UI设计是取消遮罩层&#xff0c;并设置边框样式。当 取消 了遮罩层&#xff0c;没有设置边框样式的图片如下&a…