WOLFRAM NOTEBOOK

4.2 Linear Regression Models

4.2.1 Small Data Set

In[]:=
session=StartExternalSession["Python"]
Out[]=
ExternalSessionObject
System: Python
EvaluationCount:
None
UUID: 677baabb-4631-464f-bc17-0589a0e15eea
Test
In[]:=
5+6
Out[]=
11
In[]:=
import mglearn
from sklearn.model_selection import train_test_split

X, y = mglearn.datasets.make_wave(n_samples=60)

X_train, X_test, y_train, y_test= train_test_split(X, y,random_state=0)
In[]:=
X_train
Out[]=
NumericArray
Type: Real64
Dimensions: {45,1}
In[]:=
Normal[%]
Out[]=
{{2.45592},{-1.89087},{2.19706},{-1.90905},{-2.60969},{2.81751},{-2.7213},{-2.79367},{0.5874},{-0.40833},{-2.46904},{0.0854066},{-1.89957},{-2.06403},{-1.97686},{-1.17455},{1.6508},{0.671117},{2.63699},{0.60669},{-1.72597},{1.71106},{-2.41397},{0.148539},{0.975134},{0.280262},{-1.8241},{1.1054},{2.70429},{1.99466},{-1.12973},{-0.26358},{-2.6515},{-0.801829},{-1.17232},{-2.16304},{-1.25263},{1.24844},{-0.359085},{2.53125},{0.591951},{-0.752759},{2.36896},{0.120408},{-1.44732}}
In[]:=
Xtrain=%;
In[]:=
X_test
Out[]=
NumericArray
Type: Real64
Dimensions: {15,1}
In[]:=
Normal[%]
Out[]=
{{-1.80196},{1.85038},{-1.04802},{0.554487},{2.81946},{1.39196},{2.79379},{-2.72864},{-2.26777},{-1.24713},{-2.06389},{-2.87649},{0.645269},{-0.0289385},{2.69331}}
In[]:=
Xtest=%;
In[]:=
y_train
Out[]=
NumericArray
Type: Real64
Dimensions: {45}
In[]:=
Normal[%]
Out[]=
{1.19813,-1.58832,1.2032,-1.27708,-0.83685,0.731414,-0.08137,-0.447131,0.652134,-1.25636,-1.72409,0.979232,-0.945758,-2.37365,-1.07676,-0.326911,0.250925,0.962506,1.01581,0.292629,-1.30838,0.799001,-0.913907,0.261344,0.400123,0.239382,-1.54665,0.812638,0.500159,1.07384,-0.025655,-0.385754,-0.701173,0.13369,-0.196128,-0.752409,-0.746469,0.449716,-0.934165,0.826142,1.17396,-1.18073,1.28948,0.77614,-0.751506}
In[]:=
ytrain=%;
In[]:=
y_test
Out[]=
NumericArray
Type: Real64
Dimensions: {15}
In[]:=
Normal[%]
Out[]=
{-1.11948,0.381098,-0.491317,0.658232,1.39516,0.137729,0.950818,-1.03732,-1.71132,-0.178514,-1.32036,-0.486472,-0.721426,-0.323096,0.709459}
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[]:=
lm=LinearModelFit[training,x,x];
In[]:=
model=lm//Normal
Out[]=
-0.0171112+0.441537x
In[]:=
lm[0]
Out[]=
-0.0171112
In[]:=
model/.x0
Out[]=
-0.0171112
In[]:=
datatraining=Flatten[Xtrain]Flatten[ytrain];
In[]:=
plm=Predict[datatraining,Method"LinearRegression"]
Out[]=
PredictorFunction
Input type: Numerical
Method: LinearRegression
In[]:=
plm[0]
Out[]=
-0.0162241
In[]:=
plm[1]-plm[0]
Out[]=
0.441293
In[]:=
Information[plm,"Function"]
Out[]=
-0.0162241+0.441293#1&
In[]:=
from sklearn.linear_model import LinearRegression
lr=LinearRegression().fit(X_train,y_train)
In[]:=
print(lr.coef_)
[0.44153666]
In[]:=
print(lr.intercept_)
-0.01711124414733381
In[]:=
po=lr.predict([[0.1]])
po
Out[]=
NumericArray
Type: Real64
Dimensions: {1}
In[]:=
Normal[%]
Out[]=
{0.0270424}
In[]:=
s=%;
In[]:=
lm[0.1]First[s]
Out[]=
True
In[]:=
Show[{p0,Plot[model,{x,-3,3}]}]
Out[]=
In[]:=
print("Training set score: {:.2f}".format(lr.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lr.score(X_test, y_test)))

4.2.2 Generalization of the Ordinary Least Square (OLS)

In[]:=
import mglearn
import numpy as np
from sklearn.model_selection import train_test_split

X, y = mglearn.datasets.load_extended_boston()

X_train, X_test, y_train, y_test= train_test_split(X, y,random_state=0)
In[]:=
X_train
In[]:=
np.savetxt('D:\\daTaXtrain.txt',X_train,fmt='%.5e')
In[]:=
np.savetxt('D:\\daTaXtest.txt',X_test,fmt='%.5e')
In[]:=
np.savetxt('D:\\daTaytrain.txt',y_train,fmt='%.5e')
In[]:=
np.savetxt('D:\\daTaytest.txt',y_test,fmt='%.5e')
In[]:=
from sklearn.linear_model import LinearRegression
lr=LinearRegression().fit(X_train,y_train)
In[]:=
lr.coef_
In[]:=
lr.intercept_
In[]:=
print("Training set score: {:.2f}".format(lr.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lr.score(X_test, y_test)))

4.2.3 Ridge Regression

In[]:=
from sklearn.linear_model import Ridge
ridge=Ridge().fit(X_train,y_train)
In[]:=
ridge.coef_
In[]:=
ridge.intercept_
In[]:=
print("Training set score: {:.2f}".format(ridge.score(X_train, y_train)))
print("Test set score: {:.2f}".format(ridge.score(X_test, y_test)))
In[]:=
from sklearn.linear_model import Ridge
ridge10=Ridge(alpha=10).fit(X_train,y_train)
In[]:=
ridge10.coef_
In[]:=

ridge10.intercept_
In[]:=
print("Training set score: {:.2f}".format(ridge10.score(X_train, y_train)))
print("Test set score: {:.2f}".format(ridge10.score(X_test, y_test)))

4.2.4 Lasso Regression

In[]:=
from sklearn.linear_model import Lasso
In[]:=
lasso=Lasso().fit(X_train,y_train)
In[]:=
print("Training set score: {:.2f}".format(lasso.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lasso.score(X_test, y_test)))
In[]:=
lasso=Lasso(alpha=0.01,max_iter=100000).fit(X_train,y_train)
In[]:=
print("Training set score: {:.2f}".format(lasso.score(X_train, y_train)))
print("Test set score: {:.2f}".format(lasso.score(X_test, y_test)))
In[]:=
lasso.coef_
Let us see the coefficients.

4.2.5 Elastic Net Regression

In[]:=
import mglearn
X, y = mglearn.datasets.load_extended_boston()
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test= train_test_split(X,y,random_state=0)
from sklearn.linear_model import ElasticNetCV
regr=ElasticNetCV(cv=5,max_iter=10000, random_state=0).fit(X_train,y_train)
regr.coef_
In[]:=
regr.intercept_
In[]:=
print("Training set score: {:.2f}".format(regr.score(X_train, y_train)))
print("Test set score: {:.2f}".format(regr.score(X_test, y_test)))

4.2.6 Stitching Images

In[]:=
import math
import numpy as np
from skimage import transform as tf
from scipy.io import mmread
In[]:=
src = mmread('cuki.mtx')​
dst = mmread('caki.mtx')
In[]:=
tform3=tf.ProjectiveTransform()
tform3.estimate(src, dst)
In[]:=
tform3.params
Then the transformation matrix,
Wolfram Cloud

You are using a browser not supported by the Wolfram Cloud

Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.


I understand and wish to continue anyway »

You are using a browser not supported by the Wolfram Cloud. Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.