Lecture02-LinearRegression
Copyright By PowCoder代写 加微信 powcoder
%matplotlib inline
from sklearn.linear_model import LinearRegression
import numpy as np
##### synthesis dataset
import matplotlib.pyplot as plt
import matplotlib as mpl
def make_wave(n_samples=100):
rnd = np.random.RandomState(42)
x = rnd.uniform(-3, 3, size=n_samples)
y_no_noise = (np.sin(4 * x) + x)
y = (y_no_noise + rnd.normal(size=len(x))) / 2
return x.reshape(-1, 1), y
from sklearn.model_selection import train_test_split
X, y = make_wave(n_samples=60)
plt.plot(X, y, ‘o’)
plt.ylim(-3, 3)
plt.xlabel(“Feature”)
plt.ylabel(“Target”)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
lr = LinearRegression().fit(X_train, y_train)
#predictions
print(“x=0, 1:”, lr.predict(np.array([[0], [1]])))
print(“x=2:”, lr.predict(np.array([[2]])))
print(“x=3:”, lr.predict(np.array([[3]])))
print(“x=5:”, lr.predict(np.array([[5]])))
x=0, 1: [-0.03180434 0.36210121]
x=2: [0.75600676]
x=3: [1.14991231]
x=5: [1.93772341]
print(“lr.coef_:”, lr.coef_)
print(“lr.intercept_:”, lr.intercept_)
lr.coef_: [0.39390555]
lr.intercept_: -0.03180434302675976
print(“Training set score: {:.2f}”.format(lr.score(X_train, y_train)))
print(“Test set score: {:.2f}”.format(lr.score(X_test, y_test)))
Training set score: 0.67
Test set score: 0.66
#####housing dataset
from sklearn.datasets import load_boston
from sklearn.preprocessing import MinMaxScaler
#load the housing dataset
boston = load_boston()
# feature matrix
X = boston.data
# target values
y=boston.target
# scaling features
X = MinMaxScaler().fit_transform(boston.data)
print(“Data shape: {}”.format(X.shape))
#X, y = mglearn.datasets.load_extended_boston()
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
Data shape: (506, 13)
# linear regression model
lr = LinearRegression().fit(X_train, y_train)
print(“Training set score: {:.2f}”.format(lr.score(X_train, y_train)))
print(“Test set score: {:.2f}”.format(lr.score(X_test, y_test)))
Training set score: 0.77
Test set score: 0.64
# ridge regression AKA linear regression with l2 regularization
from sklearn.linear_model import Ridge
ridge = Ridge().fit(X_train, y_train)
print(“Training set score: {:.2f}”.format(ridge.score(X_train, y_train)))
print(“Test set score: {:.2f}”.format(ridge.score(X_test, y_test)))
Training set score: 0.77
Test set score: 0.62
# ridge regression with alpha =10
ridge10 = Ridge(alpha=10).fit(X_train, y_train)
print(“Training set score: {:.2f}”.format(ridge10.score(X_train, y_train)))
print(“Test set score: {:.2f}”.format(ridge10.score(X_test, y_test)))
Training set score: 0.69
Test set score: 0.51
# ridge regression with alphaa=0.1
ridge01 = Ridge(alpha=0.1).fit(X_train, y_train)
print(“Training set score: {:.2f}”.format(ridge01.score(X_train, y_train)))
print(“Test set score: {:.2f}”.format(ridge01.score(X_test, y_test)))
Training set score: 0.77
Test set score: 0.63
# visualizaiton
plt.plot(ridge.coef_, ‘s’, label=”Ridge alpha=1″)
plt.plot(ridge10.coef_, ‘^’, label=”Ridge alpha=10″)
plt.plot(ridge01.coef_, ‘v’, label=”Ridge alpha=0.1″)
plt.plot(lr.coef_, ‘o’, label=”LinearRegression”)
plt.xlabel(“Coefficient index”)
plt.ylabel(“Coefficient magnitude”)
xlims = plt.xlim()
plt.hlines(0, xlims[0], xlims[1])
plt.xlim(xlims)
plt.ylim(-25, 25)
plt.legend()
##### Laso Method AKA linear regression with L1 regularization
from sklearn.linear_model import Lasso
lasso = Lasso().fit(X_train, y_train)
print(“Training set score: {:.2f}”.format(lasso.score(X_train, y_train)))
print(“Test set score: {:.2f}”.format(lasso.score(X_test, y_test)))
print(“Number of features used:”, np.sum(lasso.coef_ != 0))
Training set score: 0.29
Test set score: 0.23
Number of features used: 2
# we increase the default setting of “max_iter”,
# otherwise the model would warn us that we should increase max_iter.
lasso001 = Lasso(alpha=0.01, max_iter=100000).fit(X_train, y_train)
print(“Training set score: {:.2f}”.format(lasso001.score(X_train, y_train)))
print(“Test set score: {:.2f}”.format(lasso001.score(X_test, y_test)))
print(“Number of features used:”, np.sum(lasso001.coef_ != 0))
Training set score: 0.77
Test set score: 0.63
Number of features used: 13
lasso00001 = Lasso(alpha=0.0001, max_iter=100000).fit(X_train, y_train)
print(“Training set score: {:.2f}”.format(lasso00001.score(X_train, y_train)))
print(“Test set score: {:.2f}”.format(lasso00001.score(X_test, y_test)))
print(“Number of features used:”, np.sum(lasso00001.coef_ != 0))
Training set score: 0.77
Test set score: 0.64
Number of features used: 13
plt.plot(lasso.coef_, ‘s’, label=”Lasso alpha=1″)
plt.plot(lasso001.coef_, ‘^’, label=”Lasso alpha=0.01″)
plt.plot(lasso00001.coef_, ‘v’, label=”Lasso alpha=0.0001″)
plt.plot(ridge01.coef_, ‘o’, label=”Ridge alpha=0.1″)
plt.legend(ncol=2, loc=(0, 1.05))
plt.ylim(-25, 25)
plt.xlabel(“Coefficient index”)
plt.ylabel(“Coefficient magnitude”)
Text(0, 0.5, ‘Coefficient magnitude’)
from sklearn.linear_model import ElasticNetCV
ENet = ElasticNetCV(cv=5, random_state=0)
ENet.fit(X, y)
print(“Training set score: {:.2f}”.format(ENet.score(X_train, y_train)))
print(“Test set score: {:.2f}”.format(ENet.score(X_test, y_test)))
print(“Number of features used:”, np.sum(ENet.coef_ != 0))
Training set score: 0.76
Test set score: 0.63
Number of features used: 12
程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com