自组织神经网络(SOM)的Python第三方库minisom分类功能实现
【摘要】
minisom分类功能
这个例子展示了如何使用 MiniSom 来解决分类问题。分类机制将使用 MiniSom 实现,评估将使用 sklearn。
首先,让我们加载一个数据集(在本例中是著名的 Iri...
minisom分类功能
这个例子展示了如何使用 MiniSom 来解决分类问题。分类机制将使用 MiniSom 实现,评估将使用 sklearn。
首先,让我们加载一个数据集(在本例中是著名的 Iris 数据集)并应用归一化:
from minisom import MiniSom
import numpy as np
data = np.genfromtxt('iris.csv', delimiter=',', usecols=(0, 1, 2, 3))
data = np.apply_along_axis(lambda x: x/np.linalg.norm(x), 1, data)
labels = np.genfromtxt('iris.csv', delimiter=',', usecols=(4), dtype=str)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这是一个简单的分类函数,它使用分配给相关获胜神经元的标签对数据中的样本进行分类。一个标签 C 如果映射到该神经元中的大多数样本具有标签,则与该神经元相关联 C. 该函数将分配数据集中最常见的标签,以防样本映射到未分配类别的神经元。
:
def classify(som, data):
"""Classifies each sample in data in one of the classes definited
using the method labels_map.
Returns a list of the same length of data where the i-th element
is the class assigned to data[i].
"""
winmap = som.labels_map(X_train, y_train)
default_class = np.sum(list(winmap.values())).most_common()[0][0]
result = []
for d in data:
win_position = som.winner(d)
if win_position in winmap:
result.append(winmap[win_position].most_common()[0][0])
else:
result.append(default_class)
return result
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
现在我们可以 1) 拆分训练和测试集中的数据,2) 训练 som,3) 打印包含所有指标的分类报告以评估分类结果。
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
X_train, X_test, y_train, y_test = train_test_split(data, labels, stratify=labels)
som = MiniSom(7, 7, 4, sigma=3, learning_rate=0.5,
neighborhood_function='triangle', random_seed=10)
som.pca_weights_init(X_train)
som.train_random(X_train, 500, verbose=False)
print(classification_report(y_test, classify(som, X_test)))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
precision recall f1-score support
setosa 1.00 1.00 1.00 13
- 1
- 2
- 3
versicolor 0.92 1.00 0.96 12
virginica 1.00 0.92 0.96 13
accuracy 0.97 38
- 1
macro avg 0.97 0.97 0.97 38
weighted avg 0.98 0.97 0.97 38
原文链接:https://github.com/JustGlowing/minisom/blob/master/examples/Classification.ipynb
文章来源: blog.csdn.net,作者:府学路18号车神,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_44333889/article/details/118215770
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)