SOM机器学习

这段代码展示了如何使用Python的sompy库进行自组织映射(SOM)机器学习。首先,它创建了四组二维数据点,然后用这些数据训练了一个SOM。接着,代码展示了SOM的可视化,并进行了简单的聚类。最后,代码中还包含了一些其他机器学习模型(如朴素贝叶斯)和图像处理的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#--coding:utf-8--
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import sys
from time import time
pd.__version__
import sompy.sompy

help(sompy.hitmap.HitMapView)

### A toy example: two dimensional data, four clusters
dlen = 200
Data1 = pd.DataFrame(data= 1*np.random.rand(dlen,2))
Data1.values[:,1] = (Data1.values[:,0][:,np.newaxis] + .42*np.random.rand(dlen,1))[:,0]
Data2 = pd.DataFrame(data= 1*np.random.rand(dlen,2)+1)
Data2.values[:,1] = (-1*Data2.values[:,0][:,np.newaxis] + .62*np.random.rand(dlen,1))[:,0]
Data3 = pd.DataFrame(data= 1*np.random.rand(dlen,2)+2)
Data3.values[:,1] = (.5*Data3.values[:,0][:,np.newaxis] + 1*np.random.rand(dlen,1))[:,0]
Data4 = pd.DataFrame(data= 1*np.random.rand(dlen,2)+3.5)
Data4.values[:,1] = (-.1*Data4.values[:,0][:,np.newaxis] + .5*np.random.rand(dlen,1))[:,0]
Data1 = np.concatenate((Data1,Data2,Data3,Data4))


fig = plt.figure()
plt.plot(Data1[:,0],Data1[:,1],'ob',alpha=0.2, markersize=4)
plt.show()
#fig.set_size_inches(7,7)

###以下就是SOM机器学习的过程。参数注释在源码中
mapsize = [20,20]
som = sompy.SOMFactory.build(Data1,mapsize, mask=None, mapshape='planar', lattice='rect', normalization='var', initialization='pca', neighborhood='gaussian', training='batch', name='somp')
#data1表示要训练的数据,mask:隐藏层,mapsize,二维平面大小,如果是单一数字,表示节点数量。mapshape:输出层形状。lattice:输出层的晶格形状。 initialization:初始化,有PCA和random;neighnorhood:邻居调整方式
#training:训练方式seq, batch两种 name:验证somy
# this will use the default parameters, but i can change the initialization and neighborhood methods
som.train(n_job=1, verbose='info')  # verbose='debug' will print more, and verbose=None wont print anything
#n_job表示并行化的任务数。verbose:debug info none

"""
v = sompy.mapview.View2DPacked(50, 50, 'test',text_si
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值