📄 perceptron.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace homework1
{
class perceptron
{
public double[] w;
public double rate;
public int recNum;
public int adjustNumber;
private double[] inputs;
private int result, returnValue;
public perceptron(int Num)
{
inputs = new double[3];
inputs[0] = 1;
inputs[1] = 0;
inputs[2] = 0;
result = returnValue = 0;
w = new double[3];
w[0] = 1;
w[1] = 1;
w[2] = 1;
rate = 1;
recNum = Num;
adjustNumber = 0;
}
public void reset()
{
inputs[0] = 1;
inputs[1] = 0;
inputs[2] = 0;
result = returnValue = 0;
w[0] = 1;
w[1] = 1;
w[2] = 1;
rate = 1;
adjustNumber = 0;
}
public void setRate(double dr)
{rate = dr;}
public void train(ref ArrayList examples)
{
bool over = false;
while(!over)
{
over = true;
foreach(inputVector example in examples)
{
setInput(example);
returnValue = computReturn();
if(returnValue != result)
{
adjust();
adjustNumber++;
over = false;
}
}
}
}
public int perdicted(ref inputVector exam)
{
return computReturn(ref exam);
}
public void randomSetInitW(double a,double b,double c)
{
w[0] = a;
w[1] = b;
w[2] = c;
}
private void setInput(inputVector vect)
{
inputs[1] = vect.x;
inputs[2] = vect.y;
if (recNum == vect.result)
result = 1;
else
result = 0;
}
private void adjust()
{
for (int i = 0; i < 3;i++ )
{
w[i] += rate * inputs[i] * (result - returnValue);
}
}
private int computReturn(ref inputVector exam)
{
double ret = w[0] + exam.x * w[1] + exam.y * w[2];
return ret > 0 ? 1 : 0;
}
private int computReturn()
{
double ret = inputs[0] * w[0] + inputs[1] * w[1] + inputs[2] * w[2];
return ret > 0 ? 1 : 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -