机器学习实战|采用聚类和回归探究蓝莓产量情况

1.项目背景

蓝莓在全球范围内备受欢迎,其独特的风味和丰富的营养价值令消费者为之倾倒。蓝莓生长对适宜气候和土壤的依赖,该数据集包括蓝莓的生长情况、花期内的温度以及蜜蜂的密度(表示授粉),本项目通过三个模型对该数据进行了分析,得到适合蓝莓的生长环境,以及预测了蓝莓的产量,该项目能够帮助读者更好的理解数据分析的流程,以及建立一些常见的预测模型和聚类模型。

2.数据说明

字段名 描述
id 蓝莓唯一标识
Clonesize 蓝莓克隆平均大小,单位:m²
Honeybee 蜜蜂密度(单位:蜜蜂/m²/分钟)
Bumbles 大型蜜蜂密度(单位:大型蜜蜂/m²/分钟)
Andrena 安德烈纳蜂密度(单位: 安德烈纳蜂/m²/分钟)
Osmia 钥匙蜂密度(单位:钥匙蜂/m²/分钟)
MaxOfUpperTRange 花期内最高温带日平均气温的最高记录, 单位: °C
MinOfUpperTRange 花期内最高温带日平均气温的最低记录, 单位: °C
AverageOfUpperTRange 花期内最高温带日平均气温, 单位: °C
MaxOfLowerTRange 花期内最低温带日平均气温的最高记录, 单位: °C
MinOfLowerTRange 花期内最低温带日平均气温的最低记录, 单位: °C
AverageOfLowerTRange 花期内最低温带日平均气温, 单位: °C
RainingDays 花期内降雨量大于 0 的日数总和, 单位: 天
AverageRainingDays 花期内降雨日数的平均值, 单位: 天
fruitset 果实集
fruitmass 果实质量
seeds 种子数
yield 产量

3.Python库导入及数据读取

In [1]:

# 导入需要的库
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score
import statsmodels.api as sm
from statsmodels.stats.outliers_influence import variance_inflation_factor
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import scipy.stats as stats
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import RandomizedSearchCV

In [2]:

# 读取数据
train_data = pd.read_csv("/home/mw/input/data5876/train.csv")
test_data = pd.read_csv("/home/mw/input/data5876/test.csv")

4.数据预览及数据处理

4.1数据预览

In [3]:

# 查看数据维度
print('训练集纬度:')
print(train_data.shape)
print('-'*50)
print('测试集纬度:')
print(test_data.shape)
训练集纬度:
(15289, 18)
--------------------------------------------------
测试集纬度:
(10194, 17)

In [4]:

# 查看数据信息
print('训练集信息:')
print(train_data.info())
print('-'*50)
print('测试集信息:')
print(test_data.info())
训练集信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 15289 entries, 0 to 15288
Data columns (total 18 columns):
id                      15289 non-null int64
clonesize               15289 non-null float64
honeybee                15289 non-null float64
bumbles                 15289 non-null float64
andrena                 15289 non-null float64
osmia                   15289 non-null float64
MaxOfUpperTRange        15289 non-null float64
MinOfUpperTRange        15289 non-null float64
AverageOfUpperTRange    15289 non-null float64
MaxOfLowerTRange        15289 non-null float64
MinOfLowerTRange        15289 non-null float64
AverageOfLowerTRange    15289 non-null float64
RainingDays             15289 non-null float64
AverageRainingDays      15289 non-null float64
fruitset                15289 non-null float64
fruitmass               15289 non-null float64
seeds                   15289 non-null float64
yield                   15289 non-null float64
dtypes: float64(17), int64(1)
memory usage: 2.1 MB
None
--------------------------------------------------
测试集信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10194 entries, 0 to 10193
Data columns (total 17 columns):
id                      10194 non-null int64
clonesize               10194 non-null float64
honeybee                10194 non-null float64
bumbles                 10194 non-null float64
andrena                 10194 non-null float64
osmia                   10194 non-null float64
MaxOfUpperTRange        10194 non-null float64
MinOfUpperTRange        10194 non-null float64
AverageOfUpperTRange    10194 non-null float64
MaxOfLowerTRange        10194 non-null float64
MinOfLowerTRange        10194 non-null float64
AverageOfLowerTRange    10194 non-null float64
RainingDays             10194 non-null float64
AverageRainingDays      10194 non-null float64
fruitset                10194 non-null float64
fruitmass               10194 non-null float64
seeds                   10194 non-null float64
dtypes: float64(16), int64(1)
memory usage: 1.3 MB
None

In [5]:

# 查看各列缺失值
print('训练集信息缺失情况:')
print(train_data.isna().sum())
print('-'*50)
print('测试集信息缺失情况:')
print(test_data.isna().sum())
训练集信息缺失情况:
id                      0
clonesize               0
honeybee                0
bumbles                 0
andrena                 0
osmia                   0
MaxOfUpperTRange        0
MinOfUpperTRange        0
AverageOfUpperTRange    0
MaxOfLowerTRange        0
MinOfLowerTRange        0
AverageOfLowerTRange    0
RainingDays             0
AverageRainingDays      0
fruitset                0
fruitmass               0
seeds                   0
yield                   0
dtype: int64
--------------------------------------------------
测试集信息缺失情况:
id                      0
clonesize               0
honeybee                0
bumbles                 0
andrena                 0
osmia                   0
MaxOfUpperTRange        0
MinOfUpperTRange        0
AverageOfUpperTRange    0
MaxOfLowerTRange        0
MinOfLowerTRange        0
AverageOfLowerTRange    0
RainingDays             0
AverageRainingDays      0
fruitset                0
fruitmass               0
seeds                   0
dtype: int64

In [6]:

# 查看重复值
print('训练集信息重复情况:')
print(train_data.duplicated().sum())
print('-'*50)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暴躁的秋秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值