基于Python的大数据机器学习项目:微信软文浏览量预测
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))
可视化
plt.figure(figsize=(10, 6)) plt.scatter(y_test, y_pred, s=30, c='r', marker='o', alpha=0.5) plt.plot([0, max(y_test)], [0, max(y_test)], 'k--', lw=2) plt.xlabel('真实值') plt.ylabel('预测值') plt.title('随机森林模型预测结果') plt.show()
模型构建
model = MLPRegressor(hidden_layer_sizes=(100,50,10), max_iter=1000, alpha=0.001, solver='adam', verbose=0, random_state=21) 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))
可视化
plt.figure(figsize=(10, 6)) plt.scatter(y_test, y_pred, s=30, c='b', marker='o', alpha=0.5) plt.plot([0, max(y_test)], [0, max(y_test)], 'k--', lw=2) plt.xlabel('真实值') plt.ylabel('预测值') plt.title('神经网络模型预测结果') plt.show()
原文地址: https://www.cveoy.top/t/topic/oIuZ 著作权归作者所有。请勿转载和采集!