暑假第三周

这周还是继续学习了机器学习的第5 7 8章,主要是弄清了正规方程算法,logisitic回归,算法的优化,和过拟合的处理。

这是学习过程中的笔记。

                     

在学习过程找中遇到的主要问题是正规方程算法和logisitic算法的学习时的理解。

另外还敲了一些代码,具体如下:

一:首先是java基本语法的学习,自己练手时敲了一点代码:

package first;

import java.util.*;

import java.io.*;

public class first{

public static void main(String[] args)throws IOException{

Scanner cin=new Scanner(System.in);

int a;

int b=1;

for(a=0;b==1;a++){

System.out.println("请输入一个整数:");

int c;

c= cin.nextInt();

if(c<0)

System.out.println("该数字小于零!");

else if(c%2==0)

System.out.println("该数字为偶数!");

else 

System.out.println("该数字为奇数!");

System.out.println("是否继续判断?是请输入1,否请输入0");

for(int i=0;i>=0;i++){

b=cin.nextInt();

if(b!=1&&b!=0)

System.out.println("输入错误!");

else

i=-2;

}

}

}

}

ps:代码主要是用来判断输入数据的奇偶性,可以根据使用者的需要来判断是否进行,还可以判断输入的数据是否为负值

二:素数对的查找

#include<iostream>

#include<string>

using namespace std;

int main()

{

    int a, b, c;

    int d[20] = {0};

    int Sum = 0, num = 0;

    cin >> a;

    for (c = 1;c < a;) {//从1开始循环到a-1

        if (a >= 20)

        {

            for (int i = 0;i < 20;i++, c++) {//以20个数为一组进行循环

                for (b = 2;b < c;b++) {//寻找素数

                    if (c%b == 0)

                        break;

                }

                if (b == c) {//将素数存入数组中

                    d[num] = c;

                    num++;

                }

            }

            num = 0;//清零数组的下标

            for (int i = 0;i < 20;i++)//寻找素数对

                if (d[i] + 2 == d[i + 1] && d[i] != 0 && d[i + 1] != 0)

                    Sum++;//统计素数对个数

            for (int i = 0;i < 20;i++)//清空存储素数的数组

                d[i] = 0;

        }

        else//小于20的数字

            for (int i = 0;i < a;i++, c++) {

                for (b = 2;b < c;b++) {//寻找素数

                    if (c%b == 0)

                        break;

                }

                if (b == c) {//将素数存入数组中

                    d[num] = c;

                    num++;

                }

            }

        num = 0;//清零数组的下标

        for (int i = 0;i < 20;i++)//寻找素数对

            if (d[i] + 2 == d[i + 1] && d[i] != 0 && d[i + 1] != 0)

                Sum++;//统计素数对个数

        for (int i = 0;i < 20;i++)//清空存储素数的数组

            d[i] = 0;

    }

    cout << Sum;

}

ps:统计素数对个数时,为避免占用的空间过大,采用的是20个数20个数的进行查找,但是缺点是运行速度较慢,还没找到方法改进

三:输入一段话,逆序输出:

#include"pch.h"

#include<iostream>

#include<string>

using namespace std;

int main()

{

char a[10][10] ;

int  i = 0, j = 0;

char c;

for (;c=getchar() != ' ';j++)

{

if (c ==' ')

{

a[i][j] = c;

i++;

j = 0;

}

}

j = 0;

for (;i >= 0;j++)

{

cout << a[i][j];

if (a[i][j] == ' ')

{

i--;

j = 0;

}

}

return 0;

}

ps:编译过程中首先采用的是定义多个数组的方法,之后为了优化采用了二维数组的方法

四:数据移动

#include<iostream>

#include<string>

using namespace std;

int main()

{

    int n[100];

    int m, a;

    cin >> a >> m;

    for (int i = 0;i < a;i++)

    {

        cin >> n[i];

    }

    for (int i = (a - m);i < a;i++)

        cout << n[i] << " ";

    for (int i = 0;i < (a - m);i++)

    {

        if (i == a - m - 1)

            cout << n[i];

        else

            cout << n[i] << " ";

    }

    return 0;

}

五:多项式求导:

#include"pch.h"

#include<iostream>

#include<string>

using namespace std;

int main()

{

int a, n;

int f = 0;

char b;

for (int i = 0;i >= 0;i++)

{

cin >> a >> n;

if (n != 0)

{

if (f == 1)

cout << " ";

cout << a * n <<" "<< n - 1;

f = 1;

}

b = getchar();

if (b == '/n')

i = -2;

}

if (f == 0)

cout << "0 0";

}

六:判断输入前两个数是否比第三个大:

#include<iostream>

using namespace std;

int main()

{

    int num;

    long a[30];

    int j = 0;

    int y = 1;

    cin >> num;

    for (int i = 0;i < num;i++)

    {

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

            cin >> a[j++];

    }

    for (int p = 0;num != 0;p += 3)

    {

        num--;

        if (a[p] + a[p + 1] > a[p + 2])

            cout << "Case #" << y << ": true" << endl;

        else

            cout << "Case #" << y << ": false" << endl;

        y++;

    }

    return 0;

}

七:数据分类

#include<iostream>

#include<cmath>

#include <iomanip>

using namespace std;

int main()

{

    int n,a[5]={0};

    int t=0;

    float num=0;

    cin>>n;

    int p;

    for(int i=0;i<n;i++)

    {

        cin>>p;

        switch(p%5){

            case 0:{

                if(p%2==0)

                {

                    a[0]+=p;

                }

                break;

            }

            case 1:{

                a[1]+=pow(-1,t)*p;

                t++;

                break;

            }

            case 2:{

                a[2]++;

                break;

            }

            case 3:{

                a[3]+=p;

                num++;

                break;

            }

            case 4:{

                if(p>a[4])

                    a[4]=p;

                break;

            }

        }

    }

    for(int j=0;j<5;j++)

    {

        if(a[j]!=0){

            if(j==3){

             cout<<fixed<<setprecision(1)<<a[3]/num<<" ";

             continue;

        }

        cout<<a[j];

     }

     else{

         cout<<"N";

        }

        if(j<4)

         cout<<" ";

}

    return 0;

}

以上就是这周的进度了,下周开始数据集的对接练习,代码的练习当然还是继续,知识学习方面继续学习神经网络。

原文地址:https://www.cnblogs.com/studya/p/11260445.html