求k近邻法实例,有的给我发一个,matlab程序。求高手啊!

求k近邻法实例,有的给我发一个,matlab程序。求高手啊!,第1张

大奎!哥来要铅则旦分!盯扮

发个算法吧,以免口舌,VS2008C#算法代码,刚学C#,代码有些粗糙,绝对好使,想要槐扰全部代码与本人联系。呵呵~: )

public void knnsf(float PH,float JD,float NH4,float COD,float BOD,float SS,float XTD)

{

double[,] kn = new double[81, 2]

int a = 0, b = 0, c = 0

//计算欧氏距离

for (int i = 0i <27i++ )

{

kn[i, 0] = Math.Sqrt( Math.Pow(class1[i, 1] - PH, 2) + Math.Pow(class1[i, 2] - JD, 2) + Math.Pow(class1[i, 3] - NH4, 2) +

Math.Pow(class1[i, 4] - COD, 2) + Math.Pow(class1[i, 5] - BOD, 2) + Math.Pow(class1[i, 6] - SS, 2) +

Math.Pow(class1[i, 7] - XTD, 2))

kn[i, 1] = 1

kn[i+27,0] = Math.Sqrt(Math.Pow(class2[i, 1] - PH, 2) + Math.Pow(class2[i, 2] - JD, 2) + Math.Pow(class2[i, 3] - NH4, 2) +

Math.Pow(class2[i, 4] - COD, 2) + Math.Pow(class2[i, 5] - BOD, 2) + Math.Pow(class2[i, 6] - SS, 2) +

Math.Pow(class2[i, 7] - XTD, 2))

kn[i+27, 1] = 2

kn[i+54,0] = Math.Sqrt(Math.Pow(class3[i, 1] - PH, 2) + Math.Pow(class3[i, 2] - JD, 2) + Math.Pow(class3[i, 3] - NH4, 2) +

Math.Pow(class3[i, 4] - COD, 2) + Math.Pow(class3[i, 5] - BOD, 2) + Math.Pow(class3[i, 6] - SS, 2) +

Math.Pow(class3[i, 7] - XTD, 2))

kn[i+54, 1] = 3

}

//选择排序法

for (int i = 0i <81i++ )

{

int k = 0

double mintmp = kn[i, 0],clas=kn[i,1]

for (int j = i+1j <81j++)

{

if (mintmp >kn[j, 0])

{

mintmp = kn[j, 0]

clas = kn[j, 1]

k = j

}

}

kn[k, 0] = kn[i, 0]

kn[k, 1] = kn[i, 1]

kn[i, 0] = mintmp

kn[i, 1] = clas

}

//选择K=30个近邻

for (int k = 0k <3k++)

{

if (kn[k, 1] == 1) a++

if (kn[k, 1] == 2) b++

if (kn[k, 1] == 3) c++

}

//统计近邻类别

if (a >b &&a >c)

{

classes = 1

}

if (b >a &&b >c)

{

classes = 2

}

if (c >b &&c >a)

{

classes = 3

}

}

例如:使用文本界面

这里是一个例子,使用文本界面。图形界面足够的用途,所以你不可能使用文本界面。然而,看一看,现有的算法列表,以下桥握键。

##加载数据敏巧集

>>负荷数据/云

>>谁

名称的大小字节级

distribution_parameters欧盘1464结构数组

模式2x500080000双阵列

目标1x500040000双阵列

总计为15076个元素使用121464个字节

数据集存储在变量中,模式目标

##选择试验方法,训练数据和测试数据

%使画根据错误皮颤的选择方法

>>=长度(目标);

%=20;

[test_indices,train_indices]=make_a_draw(楼(%/100 *我),我);

train_patterns=模式(train_indices:,);

train_targets=目标(:,train_indices);

test_patterns=模式(test_indices:,);

test_targets=目标(:,test_indices);

##选择分类器。找出参数使用帮助<分类器名称>

>>帮助nearest_neighbor

利用最近邻算法分类

输入:

train_patterns-训练模式

train_targets-训练目标

test_patterns-测试模式

最近邻-邻居数

输出

test_targets-预测目标

##建立分类和分类数据

>>test_out=nearest_neighbor(train_patterns,train_targets,test_patterns,3);

##估计误差

>>=平均(test_targets~=test_out)

误差=

0.1313


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12471338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存