提交 aa81b524 编写于 作者: sahduashufa's avatar sahduashufa

1.06

上级 533771de
无法预览此类型文件
-0.017612 14.053064 0
-1.395634 4.662541 1
\ No newline at end of file
...@@ -53,13 +53,12 @@ Matrix read_csv(string &file_path) ...@@ -53,13 +53,12 @@ Matrix read_csv(string &file_path)
} }
} }
} }
Matrix data_ma = CreateMatrix(count_rows+1,count_col+1); Matrix data_ma = CreateMatrix(count_rows,count_col+1);
ifstream infile2; ifstream infile2;
infile2.open(file_path); infile2.open(file_path);
int next_flag = 0; int next_flag = 0;
while(!infile2.eof()) while(!infile2.eof())
{ {
next_flag+=1;
infile2 >> data; infile2 >> data;
string base = ""; string base = "";
string added =""; string added ="";
...@@ -91,8 +90,8 @@ Matrix read_csv(string &file_path) ...@@ -91,8 +90,8 @@ Matrix read_csv(string &file_path)
char *result2 = (char*)base2.data(); char *result2 = (char*)base2.data();
data_ma.matrix[next_flag][count_times] = str2double(result2); data_ma.matrix[next_flag][count_times] = str2double(result2);
} }
} }
next_flag+=1;
} }
return data_ma; return data_ma;
} }
......
无法预览此类型文件
...@@ -15,11 +15,22 @@ double duration; ...@@ -15,11 +15,22 @@ double duration;
int main() int main()
{ {
welcome(); welcome();
string path = "./data.csv"; string path = "./new_data.csv";
Matrix test_head_mat = CreateMatrix(5,4);
cout_mat(iloc(read_csv(path),2,199,0,2));
cout<<"-----------split line-----------"<<endl;
Matrix data = read_csv(path); Matrix data = read_csv(path);
cout<<"new"<<endl;
cout_mat(data);
Matrix y = iloc(data,0,0,2,3);
Matrix x = iloc(data,0,0,0,2);
cout_mat(y);
Matrix bais = CreateMatrix(data.row,1);
Matrix data_new = appply(data,bais,1);
cout_mat(data_new);
cout<<"shape: "<<data_new.row<<","<<data_new.col<<endl;
cout<<"-----------split line-----------"<<endl;
Matrix test_head_mat = CreateMatrix(5,4);
cout_mat(iloc(read_csv(path),2,19,2,3));
// Matrix data = read_csv(path);
// cout_mat(data); // cout_mat(data);
cout<<"-----------split line-----------"<<endl; cout<<"-----------split line-----------"<<endl;
Matrix a = CreateMatrix(4,3); Matrix a = CreateMatrix(4,3);
...@@ -30,19 +41,9 @@ int main() ...@@ -30,19 +41,9 @@ int main()
change_va(a,0,2,2); change_va(a,0,2,2);
change_va(a,1,1,3); change_va(a,1,1,3);
change_va(a,3,2,11); change_va(a,3,2,11);
start = clock(); start = clock();
Matrix applyed_ma = appply(a,a,1); Matrix applyed_ma = appply(a,a,1);
for(int index_x = 0;index_x<applyed_ma.row;index_x++) cout_mat(applyed_ma);
{
cout<<"|";
for(int index_y=0;index_y<applyed_ma.col;index_y++)
{
cout<<applyed_ma.matrix[index_x][index_y]<<"|";
}
cout<<endl;
}
cout<<"--------split---------"<<endl; cout<<"--------split---------"<<endl;
Matrix b = get_T(a); Matrix b = get_T(a);
for(int index_x = 0;index_x<b.row;index_x++) for(int index_x = 0;index_x<b.row;index_x++)
......
...@@ -39,7 +39,7 @@ Matrix CreateMatrix(int ro,int co) ...@@ -39,7 +39,7 @@ Matrix CreateMatrix(int ro,int co)
m.matrix = inputMatrix; m.matrix = inputMatrix;
return m; return m;
} }
int change_va(Matrix Matrix ,int index_x,int index_y,int value) int change_va(Matrix Matrix ,int index_x,int index_y,float value)
{ {
Matrix.matrix[index_x][index_y] = value; Matrix.matrix[index_x][index_y] = value;
return 0; return 0;
......
...@@ -176,7 +176,7 @@ Matrix appply(Matrix mid1,Matrix mid2,int axis = 0) ...@@ -176,7 +176,7 @@ Matrix appply(Matrix mid1,Matrix mid2,int axis = 0)
Matrix result; Matrix result;
if(axis ==1) if(axis ==1)
{result = CreateMatrix(mid1.row,new_col);} {result = CreateMatrix(mid1.row,new_col);}
else{result = CreateMatrix(new_row,mid2.col);} else{result = CreateMatrix(new_row+1,mid2.col);}
for(int index_x = 0;index_x<mid1.row;++index_x) for(int index_x = 0;index_x<mid1.row;++index_x)
{ {
for(int index_y=0;index_y<mid1.col;++index_y) for(int index_y=0;index_y<mid1.col;++index_y)
...@@ -244,18 +244,34 @@ Matrix iloc(Matrix mid1,int start_x=0,int end_x=0,int start_y=0,int end_y=0) ...@@ -244,18 +244,34 @@ Matrix iloc(Matrix mid1,int start_x=0,int end_x=0,int start_y=0,int end_y=0)
cout<<mid1.row<<end_x<<" "<<start_x<<" "<<end_y<<" "<<start_y<<endl; cout<<mid1.row<<end_x<<" "<<start_x<<" "<<end_y<<" "<<start_y<<endl;
int new_row = end_x-start_x; int new_row = end_x-start_x;
int new_col = end_y-start_y; int new_col = end_y-start_y;
cout<<"nc"<<new_col<<" nr"<<new_row<<endl; // cout<<"nc"<<new_col<<" nr"<<new_row<<endl;
Matrix mid_return = CreateMatrix(new_row,new_col); Matrix mid_return = CreateMatrix(new_row,new_col);
for(int index_x = start_x;index_x<end_x;++index_x) for(int index_x = start_x;index_x<end_x;++index_x)
{ {
for(int index_y=start_y;index_y<end_y;++index_y) for(int index_y=start_y;index_y<end_y;++index_y)
{ {
cout<<"start: "<<index_x<<",end: "<<index_y<<endl; // cout<<"start: "<<index_x<<",end: "<<index_y<<endl;
cout<<"re: "<<mid1.matrix[index_x][index_y]<<endl; // cout<<"re: "<<mid1.matrix[index_x][index_y]<<endl;
mid_return.matrix[index_x-start_x][index_y-start_y] = mid1.matrix[index_x][index_y]; mid_return.matrix[index_x-start_x][index_y-start_y] = mid1.matrix[index_x][index_y];
} }
} }
return mid_return; return mid_return;
} }
Matrix mul_simple(Matrix mid1,Matrix mid2)
{
if(mid1.row != mid2.row||mid1.col != mid2.col)
{
cout<<"Error: shape A&B"<<endl;
return mid1;
}
Matrix result = CreateMatrix(mid1.row,mid1.col);
for(int index_x = 0;index_x<mid1.row;index_x++)
{
for(int index_y=0;index_y<mid1.col;index_y++)
{
result.matrix[index_x][index_y] = mid1.matrix[index_x][index_y]*mid2.matrix[index_x][index_y];
}
}
return result;
}
#endif #endif
-0.017612,14.053064,0
-1.395634,4.662541,1
-0.752157,6.53862,0
-1.322371,7.152853,0
0.423363,11.054677,0
0.406704,7.067335,1
0.667394,12.741452,0
-2.46015,6.866805,1
0.569411,9.548755,0
-0.026632,10.427743,0
0.850433,6.920334,1
1.347183,13.1755,0
1.176813,3.16702,1
-1.781871,9.097953,0
-0.566606,5.749003,1
0.931635,1.589505,1
-0.024205,6.151823,1
-0.036453,2.690988,1
-0.196949,0.444165,1
1.014459,5.754399,1
1.985298,3.230619,1
-1.693453,-0.55754,1
-0.576525,11.778922,0
-0.346811,-1.67873,1
-2.124484,2.672471,1
1.217916,9.597015,0
-0.733928,9.098687,0
-3.642001,-1.618087,1
0.315985,3.523953,1
1.416614,9.619232,0
-0.386323,3.989286,1
0.556921,8.294984,1
1.224863,11.58736,0
-1.347803,-2.406051,1
1.196604,4.951851,1
0.275221,9.543647,0
0.470575,9.332488,0
-1.889567,9.542662,0
-1.527893,12.150579,0
-1.185247,11.309318,0
-0.445678,3.297303,1
1.042222,6.105155,1
-0.618787,10.320986,0
1.152083,0.548467,1
0.828534,2.676045,1
-1.237728,10.549033,0
-0.683565,-2.166125,1
0.229456,5.921938,1
-0.959885,11.555336,0
0.492911,10.993324,0
0.184992,8.721488,0
-0.355715,10.325976,0
-0.397822,8.058397,0
0.824839,13.730343,0
1.507278,5.027866,1
0.099671,6.835839,1
-0.344008,10.717485,0
1.785928,7.718645,1
-0.918801,11.560217,0
-0.364009,4.7473,1
-0.841722,4.119083,1
0.490426,1.960539,1
-0.007194,9.075792,0
0.356107,12.447863,0
0.342578,12.281162,0
-0.810823,-1.466018,1
2.530777,6.476801,1
1.296683,11.607559,0
0.475487,12.040035,0
-0.783277,11.009725,0
0.074798,11.02365,0
-1.337472,0.468339,1
-0.102781,13.763651,0
-0.147324,2.874846,1
0.518389,9.887035,0
1.015399,7.571882,0
-1.658086,-0.027255,1
1.319944,2.171228,1
2.056216,5.019981,1
-0.851633,4.375691,1
-1.510047,6.061992,0
-1.076637,-3.181888,1
1.821096,10.28399,0
3.01015,8.401766,1
-1.099458,1.688274,1
-0.834872,-1.733869,1
-0.846637,3.849075,1
1.400102,12.628781,0
1.752842,5.468166,1
0.078557,0.059736,1
0.089392,-0.7153,1
1.825662,12.693808,0
0.197445,9.744638,0
0.126117,0.922311,1
-0.679797,1.22053,1
0.677983,2.556666,1
0.761349,10.693862,0
-2.168791,0.143632,1
1.38861,9.341997,0
0.317029,14.739025,0
\ No newline at end of file
test.png

11.8 KB

import re
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from numpy import exp
def data():#读取txt文本内的数据并转成需要的list
f=open('data2.txt')
data=[]
for each_line in f:
each_line=each_line.strip('\n')
res=re.split(" ",each_line)
res=list(filter(None,res))
res= list(map(float,res))
data.append(res)
for i in range(len(data)):#加一个偏执项
data[i].insert(0,1)
f.close()
print(len(data[1]))
return data
def sin_cos(data,weights):#画图
x0=[]
x1=[]
y0=[]
y1=[]
for i in data:
if(i[3]==0):
x0.append(i[1])
y0.append(i[2])
else:
x1.append(i[1])
y1.append(i[2])
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x0,y0,marker='+',label='1',s=40,c='r')
ax.scatter(x1,y1,marker='*',label='1',s=40,c='b')
x = np.arange(-3, 3, 0.1)
y = (-weights[0, 0] - weights[1, 0] * x) / weights[2, 0] #matix
ax.plot(x, y)
plt.xlabel('X1')
plt.ylabel('X2')
plt.savefig('test.png')
#plt.show()
def sigmoid(inX):#逻辑函数
return 1.0/(1+exp(-inX))
def tiduxiajiang_sigmoid(data):
x=[]
y=[]
for i in range(len(data)):
x.append(data[i][:-1])
y.append(data[i][-1:])
alpha=0.002
maxcycle=1
x=np.mat(x)#转成矩阵
y=np.mat(y)
x2=x.T#矩阵转逆
weights=np.mat([[1],[1],[1]])
for i in range(maxcycle):
h = sigmoid(x* weights)
print(h.shape)
error=y-h
print("error.shape: ",error.shape)
print(error)
print("x2.h",x2.shape)
print(x2)
a = x2*error
print("alpha*x2*error: ",a.shape)
weights=weights+alpha*x2*error
print(sum(error))#看是否收敛
return weights
data=data()
weights=tiduxiajiang_sigmoid(data)
sin_cos(data,weights)
# print('\n')
#print(weights)
#to_csv(data)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册