发个算法吧,以免口舌,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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)