发个算法吧,以免口舌,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
}
}
您好,Matlab不仅仅只有自带的BP算法,它还提供了一系列机器学习算法,包括支持向量机(SVM),K近邻(KNN),决策树(DT),随机森林(RF),AdaBoost,梯度提升(GBM),神经网络(NN),以及其他一些机器大谈裂学习算法。此外,Matlab还提供了一些深度学习算法,如卷积神经网络(CNN),循环神经网络(RNN),长短期记忆(LSTM),受侍游限玻尔兹曼机(RBM),自动编码器(AE)等。因此,Matlab不仅仅只有BP算法,它还提供了一系列机器学习和深度学习算法,可以满足您的不滚闭同需求。matlab中用最小二乘拟闹团合的常用函数有polyfit(多项式拟合)、nlinfit(非线性拟合)以及regress(多元线性回归)。自变量有2个或液拦橘以上时,应变量一个,可以使用的有nlinfit和regress,线性时用regress,非线性时用nlinfit。对于进阶matlab使用者还有更多的选择,如拟衡和合工具箱、fit函数、interp系列插值拟合等等。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)