乐清网站优化,vs加数据库做网站,平面设计软件排行,新站网站收录减少更新时间:2023-2-19 16:30
相关链接
#xff08;1#xff09;2023年美赛C题Wordle预测问题一建模及Python代码详细讲解 #xff08;2#xff09;2023年美赛C题Wordle预测问题二建模及Python代码详细讲解 #xff08;3#xff09;2023年美赛C题Wordle预测问题三、四建模…更新时间:2023-2-19 16:30
相关链接
12023年美赛C题Wordle预测问题一建模及Python代码详细讲解 22023年美赛C题Wordle预测问题二建模及Python代码详细讲解 32023年美赛C题Wordle预测问题三、四建模及Python代码详细讲解 42023年美赛C题Wordle预测问题25页论文
1 问题三
这是 一个聚类分析问题
1.1 特征工程
这部分和问题一的一样
我提取了每个单词中每个字母位置的特征如a编码为1b编码为2c编码为3依次类推z编码为26那5个单词的位置就填入相应的数值类似于ont-hot编码、元音的字母的频率五个单词中元音字母出现了几次辅音字母的频率5个单词中辅音字母出现了几次还有一个是单词的词性形容词副词名词等等这部分没有做
1.2 模型建立、预测、评价
采用层次聚类模型谱系聚类图绘制如下可以将图明显的分为两种类别分别为苦难和简单说明黄色部分是数量较少对应游戏的困难程度绿色对应单词容易程度。
1层次聚类的合并算法
层次聚类的合并算法通过计算两类数据点间的相似性对所有数据点中最为相似的两个数据点进行组合并反复迭代这一过程。简单的说层次聚类的合并算法是通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性距离越小相似度越高。并将距离最近的两个数据点或类别进行组合生成聚类树。
2欧几里德距离矩阵
层次聚类使用欧式距离来计算不同类别数据点间的距离相似度。我们在前面的几篇文章中都曾经介绍过欧氏距离的计算方法本篇文章将通过创建一个欧式距离矩阵来计算和对比不同类别数据点间的距离并对距离值最小的数据点进行组合。以下是欧式距离的计算公式。 D(x1−y1)2(x2−y2)2D \sqrt{(x1-y1)^2(x2-y2)^2} D(x1−y1)2(x2−y2)2
from sklearn.cluster import AgglomerativeClustering #导入sklearn的层次聚类函数
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import linkage,dendrogram
#这里使用scipy的层次聚类函数
Z linkage(Train, method ward, metric euclidean) #谱系聚类图
P dendrogram(Z, 0) #画谱系聚类图
# plt.savefig(img/AGG层次聚类.png,dpi300)
plt.show() 将聚类分为两类并可视化到二维如下并计算评价聚类效果的指标轮廓系数。得分聚类轮廓系数为0.22768071822489375。
import matplotlib.pyplot as plt
from sklearn.metrics import silhouette_score
from sklearn.decomposition import PCA
from sklearn.cluster import AgglomerativeClustering #导入sklearn的层次聚类函数
data1 Trainclf1 AgglomerativeClustering(n_clusters 2, linkage ward)
s clf1.fit(data1)
pred1 clf1.fit_predict(data1)
score1 silhouette_score(data1, pred1)
print(f聚类轮廓系数为{score1})
pca PCA(n_components2) # 输出两维
newData1 pca.fit_transform(data1) # 载入N维x1, y1 [], []
x2, y2 [], []
x3, y3 [], []
# 0表示简单1表示困难
for index, value in enumerate(pred1):if value 0:x1.append(newData1[index][0])y1.append(newData1[index][1])elif value 1:x2.append(newData1[index][0])y2.append(newData1[index][1])
plt.figure(figsize(10, 10))# #定义坐标轴
k 200
plt.scatter(x1, y1,sk)
plt.scatter(x2, y2,sk)
plt.scatter(x3, y3,sk)
plt.legend([Hard,Easy])
plt.savefig(img/2.png,dpi300)
plt.show() 将模型输入EERIE的特征后输出是困难。 模型验证手动给数据集标注将1-4次尝试的百分比归一化后求和如果大于0.6标注为困难小于0.6标注为简单。将聚类类别结果和手动标注的类别进行计算准确率准确率有0.73。
2 问题四
1分析了Number in hard mode趋势
2分析了几种百分比的占比情况 3 Code
Code获取在浏览器中输入betterbench.top/#/40/detail或者Si我
1剩下的问题一、二、三、四代码实现在我主页查看其他文章或者在此文章的顶部点击查看。