4.1 KNearest Neighbors Regression
4.1 KNearest Neighbors Regression
4.1.1 Analysing KNearest Neighbors Regressor
4.1.1 Analysing KNearest Neighbors Regressor
In[]:=
session=StartExternalSession["Python"]
Out[]=
ExternalSessionObject
Test
In[]:=
5+6
Out[]=
11
In[]:=
import mglearn
X, y = mglearn.datasets.make_wave(n_samples=40)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test= train_test_split(X, y,random_state=0)
X, y = mglearn.datasets.make_wave(n_samples=40)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test= train_test_split(X, y,random_state=0)
In[]:=
X_train
Out[]=
NumericArray
In[]:=
Normal[%]
Out[]=
{{0.0854066},{1.85038},{-2.41397},{1.39196},{-0.359085},{0.645269},{2.79379},{-1.17455},{-1.17232},{0.60669},{-1.72597},{-2.06403},{0.148539},{-1.90905},{2.69331},{2.19706},{-2.60969},{2.70429},{-1.80196},{1.99466},{-1.97686},{-0.26358},{-2.6515},{-0.801829},{-2.16304},{-1.25263},{1.24844},{1.1054},{0.591951},{-0.752759}}
In[]:=
Xtrain=%;
In[]:=
X_test
Out[]=
NumericArray
In[]:=
Normal[%]
Out[]=
{{-1.24713},{0.671117},{1.71106},{-2.06389},{-2.87649},{-1.89957},{0.554487},{2.81946},{-0.40833},{-2.7213}}
In[]:=
Xtest=%;
In[]:=
y_train
Out[]=
NumericArray
In[]:=
Normal[%]
Out[]=
{0.697986,1.87665,-1.41502,0.779321,0.0939886,0.0352788,0.868933,0.0844854,0.0945257,1.00032,-1.5137,-2.47196,-0.527347,-1.67303,1.53708,1.49417,-0.47411,0.331226,-1.13455,0.754188,-2.08582,-0.986181,-1.52731,0.0975635,-1.12469,-0.340907,0.229562,0.254389,0.0349788,-0.448221}
In[]:=
ytrain=%;
In[]:=
y_test
Out[]=
NumericArray
In[]:=
Normal[%]
Out[]=
{0.372991,0.217782,0.966954,-1.38774,-1.0598,-0.90497,0.436558,0.778964,-0.541146,-0.956521}
In[]:=
ytest=%;
In[]:=
training=Map[Flatten[#,1]&,Transpose[Join[{Xtrain,ytrain}]]];
In[]:=
test=Map[Flatten[#,1]&,Transpose[Join[{Xtest,ytest}]]];
In[]:=
p0=ListPlot[{training,test},PlotStyle{Green,Red},FrameTrue,AxesNone,PlotMarkers{Automatic,Medium},AspectRatio1]
Out[]=
In[]:=
datatraining=Flatten[Xtrain]Flatten[ytrain];
In[]:=
f=Predict[datatraining,Method{"NearestNeighbors","NeighborsNumber"3},PerformanceGoal"Quality"]
Out[]=
PredictorFunction
In[]:=
Show[{p0,Plot[f[x],{x,-3,3},PlotStyle{Thin,Blue}]}]
Out[]=
In[]:=
datatest=Flatten[Xtest]Flatten[ytest];
In[]:=
ftest=PredictorMeasurements[f,datatest];
In[]:=
ftest["ComparisonPlot"]
Out[]=
In[]:=
u=Total[Map[#^2&,ytest-Map[f[#]&,Flatten[Xtest]]]]
Out[]=
1.08677
In[]:=
v=Total[Map[#^2&,ytest-Mean[ytest]]]
Out[]=
6.56328
In[]:=
1-u/v
Out[]=
0.834417
In[]:=
u=Total[Map[#^2&,ytrain-Map[f[#]&,Flatten[Xtrain]]]]
Out[]=
6.32668
In[]:=
v=Total[Map[#^2&,ytrain-Mean[ytrain]]]
Out[]=
35.0381
In[]:=
1-u/v
Out[]=
0.819434
In[]:=
from sklearn.neighbors import KNeighborsRegressor
reg=KNeighborsRegressor(n_neighbors=3).fit(X_train,y_train)
prediction=reg.predict(X_test)
prediction
reg=KNeighborsRegressor(n_neighbors=3).fit(X_train,y_train)
prediction=reg.predict(X_test)
prediction
Out[]=
NumericArray
In[]:=
Normal[%]
Out[]=
{-0.0539654,0.35686,1.13672,-1.89416,-1.13881,-1.63113,0.35686,0.912414,-0.446804,-1.13881}
In[]:=
print("Training set score: {:.2f}".format(reg.score(X_train, y_train)))
print("Test set score: {:.2f}".format(reg.score(X_test, y_test)))
print("Test set score: {:.2f}".format(reg.score(X_test, y_test)))
In[]:=
reg=KNeighborsRegressor(n_neighbors=1).fit(X_train,y_train)
In[]:=
print("Training set score: {:.2f}".format(reg.score(X_train, y_train)))
print("Test set score: {:.2f}".format(reg.score(X_test, y_test)))
print("Test set score: {:.2f}".format(reg.score(X_test, y_test)))
In[]:=
reg=KNeighborsRegressor(n_neighbors=9).fit(X_train,y_train)
In[]:=
print("Training set score: {:.2f}".format(reg.score(X_train, y_train)))
print("Test set score: {:.2f}".format(reg.score(X_test, y_test)))
print("Test set score: {:.2f}".format(reg.score(X_test, y_test)))
4.1.2 Surface Reconstruction
4.1.2 Surface Reconstruction