基于kaggle欧洲国家太阳能发电数据集进行聚类分析

简介

该数据集由两部分组成,一个是各国数据,一个是各国各太阳能站点数据。确定簇数时,两个数据集都使用!簇数确定后,仅适用国家数据集进行聚类,并对每个集群中的国家代表进行统计分析。

1、聚类

1.1 数据获取

path = "dataset"
df_solar_co = pd.read_csv(path + "\solar_generation_by_country.csv")
df_solar_st = pd.read_csv(path + "\solar_generation_by_station.csv")
df_solar_st = df_solar_st.drop(columns=['time_step'])#删去时间戳列

1.2 簇数确定

   以近1年的数据计算轮廓系数和肘图,从而确定簇数k。

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

def plot_elbow_scores(df_, cluster_nb):#轮廓系数+肘方法
    km_inertias, km_scores = [], []

    for k in range(2, cluster_nb):
        km = KMeans(n_clusters=k).fit(df_)
        km_inertias.append(km.inertia_)#所有簇平方和
        km_scores.append(silhouette_score(df_, km.labels_))#轮廓系数

    sns.lineplot(range(2, cluster_nb), km_inertias)
    plt.title('elbow graph / inertia depending on k')
    plt.show()

    sns.lineplot(range(2, cluster_nb), km_scores)
    plt.title('scores depending on k')
    plt.show()
#太阳能站点
df_solar_transposed = df_solar_st[-24*365:].T
plot_elbow_scores(df_solar_transposed, 20)
#对太阳能发电国家
df_solar_transposed = df_solar_co[-24 * 365:].T
plot_elbow_scores(df_solar_transposed, 20)

对于站点
   如果第一个图上没有任何真正的肘部,那么最好的 k 似乎是 7。
   肘图
在这里插入图片描述
   轮廓系数
在这里插入图片描述
对于国家
   如果第一个图上没有任何真正的肘部,那么最好的 k 似乎是 6。
   肘图
在这里插入图片描述
   轮廓系数
在这里插入图片描述
最优簇数k确定:站点和国家的结果相差不大,表示簇数为6可信度较好,因此取k=6。

1.3 聚类结果

km = KMeans(n_clusters=6).fit(X)
X['label'] = km.labels_
print("Cluster nb / Nb of countries in the cluster", X.label.value_counts())
print("Countries grouped by cluster")
for k in range(6):
    print('cluster nb : {k}', " ".join(list(X[X.label == k].index)))

聚类结果如图所示:
在这里插入图片描述

2、 分析每个集群

每个集群都用一个国家来代表
24小时内每个国家太阳能发电站的效率
在这里插入图片描述
特定某天各国太阳能发电站的效率
在这里插入图片描述
非空值的站点效率分布(即白天)
在这里插入图片描述
法国1985到2015的效率分布
在这里插入图片描述
各国月效率
在这里插入图片描述
各国周效率
在这里插入图片描述
各国年效率
在这里插入图片描述
只考虑上午5点到下午10点
各国第三4分位数
在这里插入图片描述小提琴图了解密度
在这里插入图片描述
箱线图
在这里插入图片描述
相关图
在这里插入图片描述
热力图
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值