基于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分位数
在这里插入图片描述小提琴图了解密度
在这里插入图片描述
箱线图
在这里插入图片描述
相关图
在这里插入图片描述
热力图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值