这周还是继续学习了机器学习的第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() != '\n';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