質問編集履歴

2

訂正

2021/10/19 09:43

投稿

egnoi
egnoi

スコア5

test CHANGED
File without changes
test CHANGED
@@ -3,21 +3,3 @@
3
3
  sklearnのrbf_kernelを使って非線形回帰を行うコード(下記)のサンプルコードを動かしました。
4
4
 
5
5
  下図の実行結果に表示されている黒い線は何を表しているのかがわからず、教えていただきたいです。
6
-
7
-
8
-
9
- # 考えたこと
10
-
11
- kx = rbf_kernel(X=data, Y=data, gamma=50)とあるのでガウシアンの動径基底関数を宣言しているのだと思うのですが、公式ドキュメント(https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.rbf_kernel.html)によるとk(x,y)=exp(−γ|x−y|)だよと書いてありました。
12
-
13
- rbf_kernel(X=data, Y=data, gamma=50)は引数のxとyにdataを取っているのでRBFカーネルの|x-y|は常に0になってしまうのでは?と思いprintしてみると[[1.00000000e+00 9.96687591e-01 9.92367208e-01 9.84881520e-01......となっており、何が行われているのかがわからない状態です。
14
-
15
- 話が最初に戻るのですが、そもそもk(x,y)=exp(−γ|x−y|)はy軸に対して対称な形を取るのに、結果画像中の黒線は対称の中心がx=0からずれているのはどうしてなのでしょうか。
16
-
17
-
18
-
19
- 長文失礼いたしました。
20
-
21
- 初学者のため見当違いのことばかりだとは思いますがご教授いただけますと幸いです。
22
-
23
- 宜しくお願い致します。

1

一部削除

2021/10/19 09:43

投稿

egnoi
egnoi

スコア5

test CHANGED
File without changes
test CHANGED
@@ -21,75 +21,3 @@
21
21
  初学者のため見当違いのことばかりだとは思いますがご教授いただけますと幸いです。
22
22
 
23
23
  宜しくお願い致します。
24
-
25
-
26
-
27
-
28
-
29
- # サンプルコード(一部抜粋)
30
-
31
- ```python
32
-
33
- from sklearn.metrics.pairwise import rbf_kernel
34
-
35
- from sklearn.linear_model import Ridge
36
-
37
-
38
-
39
- def true_func(x):
40
-
41
- z = 1-48*x+218*x**2-315*x**3+145*x**4
42
-
43
- return z
44
-
45
-
46
-
47
- n=100
48
-
49
- data = np.random.rand(n).astype(np.float32)
50
-
51
- data = np.sort(data)
52
-
53
- target = true_func(data)
54
-
55
- # noise付加
56
-
57
- noise = 0.5 * np.random.randn(n)
58
-
59
- target = target + noise
60
-
61
-
62
-
63
- kx = rbf_kernel(X=data, Y=data, gamma=50)
64
-
65
-
66
-
67
- clf = Ridge(alpha=30)
68
-
69
- clf.fit(kx, target)
70
-
71
-
72
-
73
- p_ridge = clf.predict(kx)
74
-
75
-
76
-
77
- plt.scatter(data, target,label='data')
78
-
79
- for i in range(len(kx)):
80
-
81
- plt.plot(data, kx[i], color='black', linestyle='-', linewidth=1, markersize=3, label='rbf', alpha=0.2)
82
-
83
-
84
-
85
- plt.plot(data, p_ridge, color='green', linestyle='-', linewidth=1, markersize=3,label='ridge regression')
86
-
87
- ```
88
-
89
-
90
-
91
-
92
-
93
- #実行結果画像
94
-
95
- ![実行結果画像](a7975918f6ca95162871f4940fd5e935.png)