from main import mglearn, train_test_split, plt, np from sklearn.svm import SVC X, y = mglearn.tools.make_handcrafted_dataset() svm = SVC(kernel='rbf', C=10, gamma=0.1).fit(X, y) mglearn.plots.plot_2d_separator(svm, X, eps=.5) mglearn.discrete_scatter(X[:, 0], X[:, 1], y) fig, axes = plt.subplots(3, 3, figsize=(15, 10)) for ax, C in zip(axes, [-1, 0, 3]): for a, gamma in zip(ax, range(-1, 2)): mglearn.plots.plot_svm(log_C=C, log_gamma=gamma, ax=a) axes[0, 0].legend(["Class 0", "Class 1", "sv class 0", "sv class 1"], ncol=4, loc=(.9, 1.2)) sv = svm.support_vectors_ sv_labels = svm.dual_coef_.ravel() > 0 mglearn.discrete_scatter(sv[:, 0], sv[:, 1], sv_labels, s=15, markeredgewidth=3) plt.xlabel("Feature 0") plt.ylabel("Feature 1") plt.show()
from main import mglearn, np, plt, train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import make_moons X, y = make_moons(n_samples=100, noise=0.25, random_state=3) X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0) forest = RandomForestClassifier(n_estimators=5, random_state=2) forest.fit(X_train, y_train) fig, axes = plt.subplots(2, 3, figsize=(20, 10)) for i, (ax, tree) in enumerate(zip(axes.ravel(), forest.estimators_)): ax.set_title("Tree {}".format(i)) mglearn.plots.plot_tree_partition(X_train, y_train, tree, ax=ax) mglearn.plots.plot_2d_separator(forest, X_train, fill=True, ax=axes[-1, -1], alpha=.4) axes[-1, -1].set_title("Random Forest") mglearn.discrete_scatter(X_train[:, 0], X_train[:, 1], y_train) plt.show()
from main import mglearn, plt, np from sklearn.decomposition import NMF from sklearn.decomposition import PCA S = mglearn.datasets.make_signals() # plt.figure(figsize=(6,1)) # plt.plot(S, '-') # plt.xlabel("Time") # plt.ylabel("Signal") A = np.random.RandomState(0).uniform(size=(100, 3)) X = np.dot(S, A.T) print("{}".format(X.shape)) nmf = NMF(n_components=3, random_state=42) S_ = nmf.fit_transform(X) print("{}".format(S_.shape)) pca = PCA(n_components=3) H = pca.fit_transform(X) models = [X, S, S_, H] names = ['X', 'S', "S_", "H"] fix, axes = plt.subplots(4, figsize=(15, 8), subplot_kw={'xticks': (), 'yticks': ()}) for model, name, ax in zip(models, names, axes): ax.set_title(name) ax.plot(model[:, :3], '-') plt.show()
# plt.show() X, y = mglearn.datasets.make_wave(n_samples=40) # waveデータセットを訓練セットとテストセットに分ける X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) # 実行 reg = KNeighborsRegressor(n_neighbors=3) reg.fit(X_train, y_train) # 結果 print("Test set predictions: \n {}".format(reg.predict(X_train))) print("Test set R^2: \n {:.2f}".format(reg.score(X_test, y_test))) fig, axes = plt.subplots(1, 3, figsize=(15, 4)) line = np.linspace(-3, 3, 1000).reshape(-1, 1) for n_neighbors, ax in zip([1, 3, 9], axes): reg = KNeighborsRegressor(n_neighbors=n_neighbors) reg.fit(X_train, y_train) ax.plot(line, reg.predict(line)) ax.plot(X_train, y_train, '^', c=mglearn.cm2(0), markersize=8) ax.plot(X_test, y_test, 'v', c=mglearn.cm2(1), markersize=8) ax.set_title( "{} neighbar(s)\n train score: {:.2f} test score: {:.2f}".format( n_neighbors, reg.score(X_train, y_train), reg.score(X_test, y_test))) ax.set_xlabel("Feature") ax.set_ylabel("Target")
from main import mglearn, train_test_split, plt from sklearn.linear_model import LogisticRegression from sklearn.svm import LinearSVC X, y = mglearn.datasets.make_forge() fig, axes = plt.subplots(1, 2, figsize=(10, 3)) for model, ax in zip([LinearSVC(), LogisticRegression()], axes): clf = model.fit(X, y) mglearn.plots.plot_2d_separator(clf, X, fill=False, eps=0.5, ax=ax, alpha=.7) mglearn.discrete_scatter(X[:, 0], X[:, 1], y, ax=ax) ax.set_title("{}".format(clf.__class__.__name__)) ax.set_xlabel("Feature 0") ax.set_ylabel("Feature 1") axes[0].legend() plt.show()