项目概述

本项目旨在利用机器学习技术,对'易速鲜花微信软文'的数据进行分析和预测。具体而言,我们将通过收集和清洗数据,进行数据分析和特征工程,最终构建多个机器学习模型,并对其进行评估和比较,以确定最优模型并预测浏览量。

数据收集和清洗

我们首先使用pandas库读取了'易速鲜花微信软文'的csv数据文件,并使用isna()函数统计了数据中NaN值出现的次数。接着,我们使用dropna()函数删除了所有NaN值,以确保数据的完整性和准确性。

数据分析

为了更好地了解数据的分布和关系,我们使用matplotlib和seaborn库绘制了两个图表。

  1. 点赞数与浏览量关系散点图: 使用散点图展示了点赞数和浏览量之间的关系。从图中可以看出,点赞数和浏览量呈现出一定的正相关性。
  2. 热度指数与浏览量关系箱线图: 使用seaborn库的箱线图展示了热度指数和浏览量之间的关系。从图中可以看出,浏览量随着热度指数的增加而增加。

特征工程

在特征工程阶段,我们使用了点赞数作为特征,浏览量作为目标变量。使用train_test_split()函数将数据集拆分为训练集和测试集。

模型构建和评估

我们使用了五种不同的机器学习模型,包括随机森林模型、决策树模型、线性回归模型、支持向量机模型和神经网络模型。对于每个模型,我们首先使用fit()函数训练模型,然后使用predict()函数对测试集进行预测,并使用mean_squared_error()函数计算预测结果与真实值之间的均方误差。最后,我们使用score()函数计算模型的R2得分,以评估模型的预测性能。

结果和分析

我们发现,使用支持向量机模型和神经网络模型可以得到最优的预测结果,这两个模型的预测集评分和训练集评分都比其他模型高。因此,我们可以选择其中一个模型作为最终的预测模型。同时,我们还可以使用模型预测功能,对未来的数据进行预测,以更好地指导业务决策。

附加图表

为了更好地展示数据的分布和关系,我们可以添加两个图表。

  1. 热度指数与点赞数关系散点图: 使用seaborn库绘制热度指数和点赞数之间的散点图,以进一步探索这两个变量之间的关系。
  2. 浏览量柱状图: 使用matplotlib库绘制浏览量的柱状图,以展示浏览量在不同点赞数下的分布情况。这些图表可以更全面地展示数据的特征和趋势,为后续的数据分析和预测提供更多的信息支持。

代码

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error
from sklearn.neural_network import MLPRegressor
from sklearn.svm import SVR

# 读取数据
df_ads = pd.read_csv('易速鲜花微信软文.csv')
print(df_ads.head(10))

# 数据清洗
df_ads.isna().sum()   # NaN出现的次数
print(df_ads.isna().sum())
df_ads = df_ads.dropna() # 删除NaN值
print(df_ads)

# 数据分析
plt.plot(df_ads['点赞数'], df_ads['浏览量'], 'r.', label='Training data')
plt.xlabel('点赞数')
plt.ylabel('浏览量')
plt.legend()
plt.show()

data = pd.concat([df_ads['浏览量'], df_ads['热度指数']], axis=1) # 浏览量和热度指数
fig = sns.boxplot(x='热度指数', y='浏览量', data=data) # 用seaborn的箱线图画图
fig.axis(ymin=0, ymax=800000); #设定y轴坐标
plt.show()

# 特征工程
X = df_ads[['点赞数']]
y = df_ads['浏览量']

# 数据拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# 模型构建
model = RandomForestRegressor()
model.fit(X_train, y_train)

# 预测结果
y_pred = model.predict(X_test)

# 模型评估
print('随机森林模型评估:')
print('均方误差:%.2f' % mean_squared_error(y_test, y_pred))
print('R2得分:%.2f' % model.score(X_test, y_test))

# 模型构建
model = DecisionTreeRegressor()
model.fit(X_train, y_train)

# 预测结果
y_pred = model.predict(X_test)

# 模型评估
print('决策树模型评估:')
print('均方误差:%.2f' % mean_squared_error(y_test, y_pred))
print('R2得分:%.2f' % model.score(X_test, y_test))

# 模型构建
model = LinearRegression()
model.fit(X_train, y_train)

# 预测结果
y_pred = model.predict(X_test)

# 模型评估
print('线性回归模型评估:')
print('均方误差:%.2f' % mean_squared_error(y_test, y_pred))
print('R2得分:%.2f' % model.score(X_test, y_test))

model_svr = SVR(kernel='rbf', C=1e3, gamma=0.1)
model_svr.fit(X_train, y_train)
y_pred_svr = model_svr.predict(X_test)
df_ads_pred_svr = X_test.copy()
df_ads_pred_svr['浏览量真值'] = y_test
df_ads_pred_svr['浏览量预测值'] = y_pred_svr
df_ads_pred_svr
print('支持向量机预测集评分:', model_svr.score(X_test, y_test))
print('支持向量机训练集评分:', model_svr.score(X_train, y_train))

model_mlp = MLPRegressor(hidden_layer_sizes=(100,50,10), max_iter=1000, alpha=0.001, solver='adam', verbose=0, random_state=21)
model_mlp.fit(X_train, y_train)
y_pred_mlp = model_mlp.predict(X_test)
df_ads_pred_mlp = X_test.copy()
df_ads_pred_mlp['浏览量真值'] = y_test
df_ads_pred_mlp['浏览量预测值'] = y_pred_mlp
df_ads_pred_mlp
print('神经网络预测集评分:', model_mlp.score(X_test, y_test))
print('神经网络训练集评分:', model_mlp.score(X_train, y_train))
基于Python的机器学习项目:易速鲜花微信软文浏览量预测

原文地址: https://www.cveoy.top/t/topic/oIuB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录