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.pswp.cn/bicheng/16472.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16472.shtml
英文地址,請注明出處:http://en.pswp.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…