⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 多个感知器分类,属于人工智能的神经网络的
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
namespace homework1
{
    public partial class Form1 : Form
    {
        private NN network;
        private ArrayList inputs,fileTrain,fileTest;
        public Form1()
        {
            InitializeComponent();
            network = new NN(4);
            inputs = new ArrayList();
            fileTrain = new ArrayList();
            fileTest = new ArrayList();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            inputVector newInput = new inputVector();
            newInput.set(1,1,1);
            inputs.Add(newInput);
            newInput = new inputVector(); 
            newInput.set(0, 2, 1);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(3, 1, 1);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(2, -1, 2);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(2, 0, 2);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(1, -2, 2);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(-1, 2, 3);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(-2, 1, 3);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(-1, 1, 3);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(-1, -1, 4);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(-2, -2, 4);
            inputs.Add(newInput);
            newInput = new inputVector();
            newInput.set(-3, -2, 4);
            inputs.Add(newInput);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            network.train(ref inputs);
            string tempStr = "";
            network.show(ref tempStr);
            showResult.Clear();
            showResult.AppendText(tempStr);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            showResult.Clear();
            foreach(inputVector example in inputs)
            {
                inputVector tempVec = new inputVector(example.x,example.y,example.result);
                int ret = network.perdicted(ref tempVec);
                showResult.AppendText("in fact: "+example.result.ToString()+"   perdicted: "+ret.ToString()+"\t\n");
            }
        }

        private void setTrainRate_Click(object sender, EventArgs e)
        {
            double tempRate = Convert.ToDouble(rateBox.Text);
            network.reset();
            network.setRate(tempRate);
            MessageBox.Show("ok");
        }
        private void writeToOut(ref StreamWriter st,ref double[] data)
        {
            for (int i = 0; i < 600;i++ )
            {
                st.WriteLine(data[i]);
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            StreamWriter st = new StreamWriter("outfile.txt");
            double[] p1, p2, p3, p4;
            p1 = new double[600];
            p2 = new double[600];
            p3 = new double[600];
            p4 = new double[600];
            int under = 0;
            double tempR;
            double num1 = 0;
            double num2 = 0;
            double num3 = 0;
            double num4 = 0;
            for (int kk = 0; kk < 100;kk++ )
            {
                under = 0;
                for (int i = 300; i > -300; i--)
                {
                    tempR = (double)i / 100;
                    tempR = Math.Pow(10, tempR);
                    network.reset();
                    network.randomSetInitW();
                    network.setRate(tempR);
                    network.train(ref inputs);
                    network.getREN(ref num1, ref num2, ref num3, ref num4);
                    p1[under] += num1;
                    p2[under] += num2;
                    p3[under] += num3;
                    p4[under] += num4;
                    under++;
                }
            }
            for (int i = 0; i < 600;i++ )
            {
                p1[i] /= 100;
                p2[i] /= 100;
                p3[i] /= 100;
                p4[i] /= 100;
            }
            writeToOut(ref st, ref p1);
            st.WriteLine("##########################");
            writeToOut(ref st, ref p2);
            st.WriteLine("##########################");
            writeToOut(ref st, ref p3);
            st.WriteLine("##########################");
            writeToOut(ref st, ref p4);
            st.WriteLine("##########################");
            st.Close();
            MessageBox.Show("OK!");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            fileTrain.Clear();
            StreamReader sr = new StreamReader("two_spiral_train.txt");
            double a, b;
            int lab;
            string trainSets = "";
            trainSets = sr.ReadToEnd();
            sr.Close();
            inputVector newInput;
            while (trainSets != "")
            {
                a = double.Parse(trainSets.Substring(0, trainSets.IndexOf('\t')));
                trainSets = trainSets.Substring(trainSets.IndexOf('\t')+1);
                b = double.Parse(trainSets.Substring(0, trainSets.IndexOf('\t')));
                trainSets = trainSets.Substring(trainSets.IndexOf('\t')+1);
                lab = int.Parse(trainSets.Substring(0, trainSets.IndexOf('\r')));
                trainSets = trainSets.Substring(trainSets.IndexOf('\n')+1);
                newInput = new inputVector(a, b, lab);
                fileTrain.Add(newInput);
            }
            MessageBox.Show("ok");
        }

        private void button6_Click(object sender, EventArgs e)
        {
            network.train(ref fileTrain);
            string tempStr = "";
            network.show(ref tempStr);
            showResult.Clear();
            showResult.AppendText(tempStr);
        }

        private void button5_Click(object sender, EventArgs e)
        {
            fileTest.Clear();
            StreamReader sr = new StreamReader("two_spiral_test.txt");
            double a, b;
            int lab;
            string trainSets = "";
            trainSets = sr.ReadToEnd();
            sr.Close();
            inputVector newInput;
            while (trainSets != "")
            {
                a = double.Parse(trainSets.Substring(0, trainSets.IndexOf('\t')));
                trainSets = trainSets.Substring(trainSets.IndexOf('\t') + 1);
                b = double.Parse(trainSets.Substring(0, trainSets.IndexOf('\t')));
                trainSets = trainSets.Substring(trainSets.IndexOf('\t') + 1);
                lab = int.Parse(trainSets.Substring(0, trainSets.IndexOf('\r')));
                trainSets = trainSets.Substring(trainSets.IndexOf('\n') + 1);
                newInput = new inputVector(a, b, lab);
                fileTest.Add(newInput);
            }
            MessageBox.Show("ok");
        }

        private void button7_Click(object sender, EventArgs e)
        {
            showResult.Clear();
            foreach (inputVector example in fileTest)
            {
                inputVector tempVec = new inputVector(example.x, example.y, example.result);
                int ret = network.perdicted(ref tempVec);
                showResult.AppendText("in fact: " + example.result.ToString() + "   perdicted: " + ret.ToString() + "\t\n");
            }

        }

        private void button8_Click(object sender, EventArgs e)
        {
            int num = int.Parse(perNumber.Text);
            network = new NN(num);
            MessageBox.Show("ok");
        }

        private void button9_Click(object sender, EventArgs e)
        {
            StreamWriter sw = new StreamWriter("data.txt");
            foreach(inputVector exam in fileTrain)
            {
                if(exam.result==1)
                {
                    sw.WriteLine(exam.x);
                }
            }
            sw.WriteLine("xxxxxxxxxxxxxxx1111111111111111");
            foreach (inputVector exam in fileTrain)
            {
                if (exam.result == 0)
                {
                    sw.WriteLine(exam.x);
                }
            }
            sw.WriteLine("xxxxxxxxxxxxxxx0000000000000000");
            foreach (inputVector exam in fileTrain)
            {
                if (exam.result == 1)
                {
                    sw.WriteLine(exam.y);
                }
            }
            sw.WriteLine("yyyyyyyyyyyyyyy1111111111111111");
            foreach (inputVector exam in fileTrain)
            {
                if (exam.result == 0)
                {
                    sw.WriteLine(exam.y);
                }
            }
            sw.WriteLine("yyyyyyyyyyyyyyy0000000000000000");
            sw.Close();
            MessageBox.Show("ok");
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -