In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame
(1) 次の関数 create_dataset() を用いて、num=10 個のデータからなるデータフレーム data を作成します。その後、iterrowsメソッドを利用して、データポイント (x,y) のy値と関数 sin(2πx) の値について、平方根平均二乗誤差 √sum(sin(2πx) - y)**2 / num を計算してください。
In [2]:
from numpy.random import normal
def create_dataset(num):
data_x = np.linspace(0,1,num)
data_y = np.sin(2*np.pi*data_x) + normal(loc=0, scale=0.3, size=num)
return DataFrame({'x': data_x, 'y': data_y})
In [3]:
data = create_dataset(10)
data
Out[3]:
In [4]:
square_error = 0.0
for i, line in data.iterrows():
square_error += (np.sin(2*np.pi*line.x) - line.y) ** 2
rmse = np.sqrt(square_error / len(data))
rmse
Out[4]:
(2) (1)のDataFrameから列 'x' だけを取り出したSeriesオブジェクトを変数 x に格納してください。さらに、x**2 (各要素を2乗した値)を要素とするSeriesオブジェクトを作成して、変数 x2 に格納してください。同様に、x**3、x**4 を要素とするSeriesオブジェクトを変数 x3, x4 に格納します。それぞれのSeriesオブジェクトのnameプロパティは、'x2', 'x3', 'x4' とします。
In [5]:
x = create_dataset(10).x
x2 = x**2
x2.name = 'x2'
x3 = x**3
x3.name = 'x3'
x4 = x**4
x4.name = 'x4'
(3) (2)で作成した x, x2, x3, x4 を結合して、x, x2, x3, x4を列に持ったデータフレーム dataset を作成してください。
In [6]:
dataset = pd.concat([x,x2, x3, x4], axis=1)
dataset
Out[6]: