回答編集履歴
10
コメント修正
answer
CHANGED
@@ -2,14 +2,12 @@
|
|
2
2
|
動作確認できてませんが、ざっと見直してみました。
|
3
3
|
|
4
4
|
```
|
5
|
-
# csvの操作用にインポート
|
6
5
|
import csv
|
7
|
-
# csvの数値計算用のライブラリをインポート
|
8
6
|
import numpy as np
|
9
7
|
|
10
8
|
|
11
9
|
def read_csv():
|
12
|
-
"""データ
|
10
|
+
"""データ入力"""
|
13
11
|
with open('C:/Users/.spyder-py3/191224~/testdataXYZ.csv') as f:
|
14
12
|
return list(csv.reader(f))
|
15
13
|
|
@@ -21,13 +19,13 @@
|
|
21
19
|
|
22
20
|
|
23
21
|
def stat(o, e):
|
24
|
-
"""定数項、偏回帰係数
|
22
|
+
"""定数項、偏回帰係数算出"""
|
25
23
|
e = np.vstack([np.ones(e.shape[1]), e]) # 定数項, 説明変数
|
26
24
|
return np.linalg.lstsq(e.T, o)[0] # 偏回帰係数
|
27
25
|
|
28
26
|
|
29
27
|
def output(a):
|
30
|
-
|
28
|
+
"""結果表示"""
|
31
29
|
print('算出式')
|
32
30
|
print('z=(6*x^3)+(5*x^2*y)+(0*x*y^2)+(4*x*y)+3*x+2*y+0*x^2+0*y^2+y^3+100')
|
33
31
|
print('答え合わせ')
|
@@ -44,14 +42,12 @@
|
|
44
42
|
|
45
43
|
|
46
44
|
def main():
|
47
|
-
# データ
|
45
|
+
# データ入力
|
48
46
|
csv = read_csv()
|
49
47
|
|
50
48
|
# 座標データ切り出し
|
51
49
|
x, y, z = cut_out(csv)
|
52
50
|
|
53
|
-
# 文字列を削除した分のデータ数補正
|
54
|
-
|
55
51
|
# 数字の数値化
|
56
52
|
x = list(map(float, x))
|
57
53
|
y = list(map(float, y))
|
9
不要リスト化削除
answer
CHANGED
@@ -68,7 +68,7 @@
|
|
68
68
|
y2 = yi**2
|
69
69
|
xy = xi*yi
|
70
70
|
yield x3, x2y, xy2, y3, x2, y2, xy
|
71
|
-
exp = list(
|
71
|
+
exp = list(zip(*calculate()))
|
72
72
|
|
73
73
|
# 定数項、偏回帰係数の算出
|
74
74
|
obj = np.array(z) # 目的変数
|
8
関数名変更
answer
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
z = list(map(float, z))
|
59
59
|
|
60
60
|
# 変数の計算
|
61
|
-
def
|
61
|
+
def calculate():
|
62
62
|
for xi, yi in zip(x, y):
|
63
63
|
x3 = xi**3
|
64
64
|
x2y = xi**2*yi
|
@@ -68,7 +68,7 @@
|
|
68
68
|
y2 = yi**2
|
69
69
|
xy = xi*yi
|
70
70
|
yield x3, x2y, xy2, y3, x2, y2, xy
|
71
|
-
exp = list(map(list, zip(*
|
71
|
+
exp = list(map(list, zip(*calculate())))
|
72
72
|
|
73
73
|
# 定数項、偏回帰係数の算出
|
74
74
|
obj = np.array(z) # 目的変数
|
7
不要変数削除
answer
CHANGED
@@ -59,7 +59,7 @@
|
|
59
59
|
|
60
60
|
# 変数の計算
|
61
61
|
def variables():
|
62
|
-
for xi, yi
|
62
|
+
for xi, yi in zip(x, y):
|
63
63
|
x3 = xi**3
|
64
64
|
x2y = xi**2*yi
|
65
65
|
xy2 = xi*yi**2
|
6
変数名誤記訂正
answer
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
def cut_out(csv):
|
18
18
|
"""座標データ切り出し"""
|
19
|
-
_, x, y, z = zip(*
|
19
|
+
_, x, y, z = zip(*csv)
|
20
20
|
return x[1:], y[1:], z[1:]
|
21
21
|
|
22
22
|
|
5
変数名修正
answer
CHANGED
@@ -8,16 +8,15 @@
|
|
8
8
|
import numpy as np
|
9
9
|
|
10
10
|
|
11
|
-
def
|
11
|
+
def read_csv():
|
12
12
|
"""データの入力"""
|
13
13
|
with open('C:/Users/.spyder-py3/191224~/testdataXYZ.csv') as f:
|
14
14
|
return list(csv.reader(f))
|
15
15
|
|
16
16
|
|
17
|
-
def
|
17
|
+
def cut_out(csv):
|
18
|
-
"""データ
|
18
|
+
"""座標データ切り出し"""
|
19
|
-
_, x, y, z = zip(*
|
19
|
+
_, x, y, z = zip(*data)
|
20
|
-
# ヘッダ行削除
|
21
20
|
return x[1:], y[1:], z[1:]
|
22
21
|
|
23
22
|
|
@@ -46,10 +45,10 @@
|
|
46
45
|
|
47
46
|
def main():
|
48
47
|
# データの入力
|
49
|
-
|
48
|
+
csv = read_csv()
|
50
49
|
|
51
|
-
# データ
|
50
|
+
# 座標データ切り出し
|
52
|
-
x, y, z =
|
51
|
+
x, y, z = cut_out(csv)
|
53
52
|
|
54
53
|
# 文字列を削除した分のデータ数補正
|
55
54
|
|
4
データ数変数削除
answer
CHANGED
@@ -9,28 +9,22 @@
|
|
9
9
|
|
10
10
|
|
11
11
|
def csv_in():
|
12
|
-
"""データ数のカウント"""
|
13
|
-
with open('C:/Users/.spyder-py3/191224~/testdataXYZ.csv') as f:
|
14
|
-
return np.shape(list(csv.reader(f)))[0]
|
15
|
-
|
16
|
-
|
17
|
-
def csv_in2():
|
18
12
|
"""データの入力"""
|
19
13
|
with open('C:/Users/.spyder-py3/191224~/testdataXYZ.csv') as f:
|
20
14
|
return list(csv.reader(f))
|
21
15
|
|
22
16
|
|
23
|
-
def val_cut(
|
17
|
+
def val_cut(data):
|
24
18
|
"""データの切り分け"""
|
25
19
|
_, x, y, z = zip(*val2)
|
26
|
-
#
|
20
|
+
# ヘッダ行削除
|
27
|
-
return x[1:
|
21
|
+
return x[1:], y[1:], z[1:]
|
28
22
|
|
29
23
|
|
30
24
|
def stat(o, e):
|
31
25
|
"""定数項、偏回帰係数の算出"""
|
32
26
|
e = np.vstack([np.ones(e.shape[1]), e]) # 定数項, 説明変数
|
33
|
-
return np.linalg.lstsq(e.T, o)[0]
|
27
|
+
return np.linalg.lstsq(e.T, o)[0] # 偏回帰係数
|
34
28
|
|
35
29
|
|
36
30
|
def output(a):
|
@@ -51,14 +45,11 @@
|
|
51
45
|
|
52
46
|
|
53
47
|
def main():
|
54
|
-
# データ数の受け渡し
|
55
|
-
k = csv_in()
|
56
|
-
|
57
48
|
# データの入力
|
58
49
|
data = csv_in2()
|
59
50
|
|
60
51
|
# データの切り分け
|
61
|
-
x, y, z = val_cut(
|
52
|
+
x, y, z = val_cut(data)
|
62
53
|
|
63
54
|
# 文字列を削除した分のデータ数補正
|
64
55
|
|
3
処理変更
answer
CHANGED
@@ -20,11 +20,11 @@
|
|
20
20
|
return list(csv.reader(f))
|
21
21
|
|
22
22
|
|
23
|
-
def val_cut(
|
23
|
+
def val_cut(k, data):
|
24
24
|
"""データの切り分け"""
|
25
25
|
_, x, y, z = zip(*val2)
|
26
26
|
# 文字の削除
|
27
|
-
return x[1:], y[1:], z[1:]
|
27
|
+
return x[1:k], y[1:k], z[1:k]
|
28
28
|
|
29
29
|
|
30
30
|
def stat(o, e):
|
@@ -60,6 +60,8 @@
|
|
60
60
|
# データの切り分け
|
61
61
|
x, y, z = val_cut(k, data)
|
62
62
|
|
63
|
+
# 文字列を削除した分のデータ数補正
|
64
|
+
|
63
65
|
# 数字の数値化
|
64
66
|
x = list(map(float, x))
|
65
67
|
y = list(map(float, y))
|
2
処理修正
answer
CHANGED
@@ -60,9 +60,6 @@
|
|
60
60
|
# データの切り分け
|
61
61
|
x, y, z = val_cut(k, data)
|
62
62
|
|
63
|
-
# 文字列を削除した分のデータ数補正
|
64
|
-
del x[0], y[0], z[0]
|
65
|
-
|
66
63
|
# 数字の数値化
|
67
64
|
x = list(map(float, x))
|
68
65
|
y = list(map(float, y))
|
1
一部変更
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
無駄な変数の初期化はやめましょう。
|
2
|
-
動作確認できてませんが、ざっと。
|
2
|
+
動作確認できてませんが、ざっと見直してみました。
|
3
3
|
|
4
4
|
```
|
5
5
|
# csvの操作用にインポート
|
@@ -24,8 +24,7 @@
|
|
24
24
|
"""データの切り分け"""
|
25
25
|
_, x, y, z = zip(*val2)
|
26
26
|
# 文字の削除
|
27
|
-
|
27
|
+
return x[1:], y[1:], z[1:]
|
28
|
-
return x, y, z
|
29
28
|
|
30
29
|
|
31
30
|
def stat(o, e):
|