数据分析实战 - 1 农民工数据预测(线性回归模型的使用)

import numpy as np
import pandas as pd

农民工总收入预测(回归模型的使用)

以下是农民工收入的统计数据,使用历史年份对总体农民工,外出农民工,本地农民工分别建立回归模型训练,并且对2023年的这几个维度的值进行预测;

统计局数据 2018年 2019年 2020年 2021年 2022年 2023年

农民工收入 全国 全国 全国 全国 全国 全国

总体农民工 3721 3962 4072 4432 4615
外出农民工 4107 4427 4549 5013 5240
本地农民工 3340 3500 3606 3878 4026

分别使用普通的线性模型,决策树回归模型,随机森林回归模型进行预测,顺便验证下不同模型输出的预测结果是否相同

### 数据准备
data = {'年份':[2018,2019,2020,2021,2022],
        '总体农民工收入':[3721, 3962, 4072, 4432, 4615],
        '外出农民工收入':[4107, 4427, 4549, 5013, 5240],
        '本地农民工收入':[3340, 3500, 3606, 3878, 4026]}
df = pd.DataFrame(data = data)
df
年份总体农民工收入外出农民工收入本地农民工收入
02018372141073340
12019396244273500
22020407245493606
32021443250133878
42022461552404026
### 线性模型预测
from sklearn.linear_model import LinearRegression

# 创建并拟合线性回归模型
LR_regression_total = LinearRegression()
LR_regression_total.fit(df['年份'].values.reshape(-1,1),df['总体农民工收入'])

LR_regression_outgoing = LinearRegression()
LR_regression_outgoing.fit(df['年份'].values.reshape(-1,1),df['外出农民工收入'])

LR_regression_local = LinearRegression()
LR_regression_local.fit(df['年份'].values.reshape(-1,1),df['本地农民工收入'])

# 预测
pre_total = LR_regression_total.predict([[2023]])
pre_outgoing = LR_regression_outgoing.predict([[2023]])
pre_local = LR_regression_local.predict([[2023]])

# 打印结果
print("预测2023年的总体农民工收入:", pre_total)
print("预测2023年的外出农民工收入:", pre_outgoing)
print("预测2023年的本地农民工收入:", pre_local)
预测2023年的总体农民工收入: [4837.8]
预测2023年的外出农民工收入: [5522.8]
预测2023年的本地农民工收入: [4195.]
### 决策树模型预测
from sklearn.tree import DecisionTreeRegressor

# 创建并拟合线性回归模型
decision_tree_total = DecisionTreeRegressor()
decision_tree_total.fit(df['年份'].values.reshape(-1,1),df['总体农民工收入'])

decision_tree_outgoing = DecisionTreeRegressor()
decision_tree_outgoing.fit(df['年份'].values.reshape(-1,1),df['外出农民工收入'])

decision_tree_local = DecisionTreeRegressor()
decision_tree_local.fit(df['年份'].values.reshape(-1,1),df['本地农民工收入'])

# 预测
pre_total_dt = decision_tree_total.predict([[2023]])
pre_outgoing_dt = decision_tree_outgoing.predict([[2023]])
pre_local_dt = decision_tree_local.predict([[2023]])

# 打印结果
print("预测2023年的总体农民工收入:", pre_total_dt)
print("预测2023年的外出农民工收入:", pre_outgoing_dt)
print("预测2023年的本地农民工收入:", pre_local_dt)
预测2023年的总体农民工收入: [4615.]
预测2023年的外出农民工收入: [5240.]
预测2023年的本地农民工收入: [4026.]
### 随机森林模型预测
from sklearn.ensemble import RandomForestRegressor

# 创建并拟合线性回归模型
random_forest_total = RandomForestRegressor()
random_forest_total.fit(df['年份'].values.reshape(-1,1),df['总体农民工收入'])

random_forest_outgoing = RandomForestRegressor()
random_forest_outgoing.fit(df['年份'].values.reshape(-1,1),df['外出农民工收入'])

random_forest_local = RandomForestRegressor()
random_forest_local.fit(df['年份'].values.reshape(-1,1),df['本地农民工收入'])

# 预测
pre_total_rf = random_forest_total.predict([[2023]])
pre_outgoing_rf = random_forest_outgoing.predict([[2023]])
pre_local_rf = random_forest_local.predict([[2023]])

# 打印结果
print("预测2023年的总体农民工收入:", pre_total_rf)
print("预测2023年的外出农民工收入:", pre_outgoing_rf)
print("预测2023年的本地农民工收入:", pre_local_rf)
预测2023年的总体农民工收入: [4547.59]
预测2023年的外出农民工收入: [5150.87]
预测2023年的本地农民工收入: [3961.2]

结论:即使条件相同,不同模型的预测结果一般并不相同,之前我有个预测季度外出农民工的得到了相同的结果,要不就是数据量太少,或者很可能是哪里使用错误了

农民工分四大区总收入预测(回归模型的使用)

以下是农民工收入的统计数据,使用历史年份对东部地区,中部地区,西部地区,东北地区收入分别建立回归模型训练,并且对2023年的这几个维度的值进行预测;

统计局数据 2018年 2019年 2020年 2021年 2022年

分四大区收入 全国 全国 全国 全国 全国

东部地区 3955 4222 4351 4787 5001

中部地区 3568 3794 3866 4205 4386

西部地区 3522 3723 3808 4078 4238

东北地区 3298 3469 3574 3813 3848

注意此处数据最好整理成一列是一个维度

### 数据准备
data2 = {
    2018:[3955, 3568, 3522, 3298],
    2019:[4222, 3794, 3723, 3469],
    2020:[4351, 3866, 3808, 3574],
    2021:[4787, 4205, 4078, 3813],
    2022:[5001, 4386, 4238, 3848]
}
df2 = pd.DataFrame(data = data2,index = ['东部地区','中部地区','西部地区','东北地区'])
df2
20182019202020212022
东部地区39554222435147875001
中部地区35683794386642054386
西部地区35223723380840784238
东北地区32983469357438133848
### 遇到上述情况不好直接训练,灵活使用转置调整数据格式
df2 = df2.transpose()
df2
东部地区中部地区西部地区东北地区
20183955356835223298
20194222379437233469
20204351386638083574
20214787420540783813
20225001438642383848
df2.index.values
array([2018, 2019, 2020, 2021, 2022], dtype=int64)
### 使用线性模型进行预测
from sklearn.linear_model import LinearRegression

# 准备特征列与目标列,'.values'方法将各列数据提取为NumPy数组
years = df2.index.values 
east_income = df2['东部地区'].values
central_income = df2['中部地区'].values
west_income = df2['西部地区'].values
northeast_income = df2['东北地区'].values

# 创建并拟合线性回归模型
regression_east = LinearRegression()
regression_east.fit(years.reshape(-1, 1), east_income)

regression_central = LinearRegression()
regression_central.fit(years.reshape(-1, 1), central_income)

regression_west = LinearRegression()
regression_west.fit(years.reshape(-1, 1), west_income)

regression_northeast = LinearRegression()
regression_northeast.fit(years.reshape(-1, 1), northeast_income)

# 预测2023年的农民工收入
prediction_east = regression_east.predict([[2023]])
prediction_central = regression_central.predict([[2023]])
prediction_west = regression_west.predict([[2023]])
prediction_northeast = regression_northeast.predict([[2023]])

print("预测2023年的东部地区农民工收入:", prediction_east)
print("预测2023年的中部地区农民工收入:", prediction_central)
print("预测2023年的西部地区农民工收入:", prediction_west)
print("预测2023年的东北地区农民工收入:", prediction_northeast)
预测2023年的东部地区农民工收入: [5260.3]
预测2023年的中部地区农民工收入: [4577.9]
预测2023年的西部地区农民工收入: [4409.9]
预测2023年的东北地区农民工收入: [4033.6]

农民工分六大行业总收入预测(回归模型的使用)

以下是农民工收入的统计数据,使用历史年份对制造业,建筑业,批发和零售业,交通运输仓储和邮政业,住宿餐饮业,居民服务修理和其他服务业 收入分别建立回归模型训练,并且对2023年的这几个维度的值进行预测;
统计局数据 2018年 2019年 2020年 2021年 2022年

分六大行业收入 全国 全国 全国 全国 全国

制造业 3732 3958 4096 4508 4694

建筑业 4209 4567 4699 5141 5358

批发和零售业 3263 3472 3532 3796 3979

交通运输仓储和邮政业 4345 4667 4814 5151 5301

住宿餐饮业 3148 3289 3358 3638 3824

居民服务修理和其他服务业 3202 3337 3387 3710 3874

import numpy as np
from sklearn.linear_model import LinearRegression

# 历史数据
years = np.array([2018, 2019, 2020, 2021, 2022])
manufacturing_income = np.array([3732, 3958, 4096, 4508, 4694])
construction_income = np.array([4209, 4567, 4699, 5141, 5358])
wholesale_retail_income = np.array([3263, 3472, 3532, 3796, 3979])
transportation_income = np.array([4345, 4667, 4814, 5151, 5301])
accommodation_food_income = np.array([3148, 3289, 3358, 3638, 3824])
service_income = np.array([3202, 3337, 3387, 3710, 3874])

# 创建并拟合线性回归模型
regression_manufacturing = LinearRegression()
regression_manufacturing.fit(years.reshape(-1, 1), manufacturing_income)

regression_construction = LinearRegression()
regression_construction.fit(years.reshape(-1, 1), construction_income)

regression_wholesale_retail = LinearRegression()
regression_wholesale_retail.fit(years.reshape(-1, 1), wholesale_retail_income)

regression_transportation = LinearRegression()
regression_transportation.fit(years.reshape(-1, 1), transportation_income)

regression_accommodation_food = LinearRegression()
regression_accommodation_food.fit(years.reshape(-1, 1), accommodation_food_income)

regression_service = LinearRegression()
regression_service.fit(years.reshape(-1, 1), service_income)

# 预测2023年的农民工收入
prediction_manufacturing = regression_manufacturing.predict([[2023]])
prediction_construction = regression_construction.predict([[2023]])
prediction_wholesale_retail = regression_wholesale_retail.predict([[2023]])
prediction_transportation = regression_transportation.predict([[2023]])
prediction_accommodation_food = regression_accommodation_food.predict([[2023]])
prediction_service = regression_service.predict([[2023]])

print("预测2023年的制造业农民工收入:", prediction_manufacturing)
print("预测2023年的建筑业农民工收入:", prediction_construction)
print("预测2023年的批发和零售业农民工收入:", prediction_wholesale_retail)
print("预测2023年的交通运输仓储和邮政业农民工收入:", prediction_transportation)
print("预测2023年的住宿餐饮业农民工收入:", prediction_accommodation_food)
print("预测2023年的居民服务修理和其他服务业农民工收入:", prediction_service)

预测2023年的制造业农民工收入: [4939.8]
预测2023年的建筑业农民工收入: [5656.4]
预测2023年的批发和零售业农民工收入: [4135.2]
预测2023年的交通运输仓储和邮政业农民工收入: [5574.4]
预测2023年的住宿餐饮业农民工收入: [3961.7]
预测2023年的居民服务修理和其他服务业农民工收入: [4017.1]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想问关于python预测糖尿病的问题。在Python中,我们可以使用线性回归模型预测糖尿病。下面是一个简单的例子,演示如何使用线性回归模型预测糖尿病。 首先,我们需要导入必要的库,如下所示: ```python import pandas as pd from sklearn import linear_model from sklearn.model_selection import train_test_split ``` 接下来,我们可以使用Pandas库来读取糖尿病数据集,并将其转换为数据框。数据集可以从UCI机器学习库中获取。 ```python # 读取数据集 diabetes = pd.read_csv('https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv', header=None) # 将列名添加到数据框 diabetes.columns = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] ``` 然后,我们可以将数据集分为训练集和测试集,以便评估模型的性能。 ```python # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(diabetes.drop('class', axis=1), diabetes['class'], test_size=0.2) ``` 接下来,我们可以定义一个线性回归模型,并将训练数据拟合到模型中。 ```python # 定义线性回归模型 model = linear_model.LinearRegression() # 将训练数据拟合到模型中 model.fit(X_train, y_train) ``` 最后,我们可以使用测试数据来评估模型的性能,并计算模型的准确性。 ```python # 使用测试数据来评估模型的性能 accuracy = model.score(X_test, y_test) print("模型准确性为 {:.2f}%".format(accuracy * 100)) ``` 以上就是使用线性回归模型预测糖尿病的简单示例。当然,还有其他更复杂的模型和方法可以用来预测糖尿病,如支持向量机、决策树等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值