# -*- encoding:utf-8 -*- from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_predict from numpy import shape from sklearn import metrics import numpy as np import random ''' 线性不可分 ''' def curve(x_train,w,w0): results=x_train.tolist() results=[x[0:2] for x in results] step=0.0001 for i in np.arange(-0.2,1.2,step): x1=i+step x2=-1*(w[0]*x1+w0)/(w[1]+w[2]*x1) # 计算mse if abs(x2)>5.0: continue results.append([x1,x2]) results=["{},{}".format(x1,x2) for [x1,x2] in results] return results def get_data(center_label,num=100): X_train=[] y_train=[] sigma=0.01 for point,label in center_label: c1,c2=point for _ in range(0,num): x1=c1+random.uniform(-sigma,sigma) x2=c2+random.uniform(-sigma,sigma) X_train.append([x1,x2]) y_train.append([label]) return X_train,y_train center_label=[[[0,0],1],[[1,1],1],[[0,1],0],[[1,0],0]] X_train,y_train=get_data(center_label) #X_train=10*[[0,0],[1,1],[1,0],[0,1]] X_train=[ x+[x[0]*x[1]] for x in X_train] X_train=np.array(X_train) #model = LogisticRegression(penalty="l2") model = LogisticRegression() model.fit(X_train, y_train) print (model.coef_) print (model.intercept_) curve_results=curve(X_train,model.coef_.tolist()[0],model.intercept_.tolist()[0]) ''' with open("no_separa_traindata.csv","w") as f : f.writelines("\n".join(curve_results[0:400])) with open("no_separa_train_with_splitline.csv","w") as f : f.writelines("\n".join(curve_results)) '''