Example #1
0
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from module import k_nearest, normalization

#iris_dataを取得しランダムに並べ替える
iris_data = pd.read_csv("iris.csv", encoding="utf-8").sample(frac=1)

#データとラベルにわけ配列の形に変換する
datas = iris_data.loc[:, [
    "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"
]].values
labels = iris_data.loc[:, "Name"].values

#データを正規化
datas_n = normalization.normalization(datas)

#kの値を1から30まで変えてk近傍法を行う
accuracies = []
for k in range(30):
    count = 0
    #一つ抜き法
    for i in range(len(datas)):
        test_data = datas_n[i]
        train_data = np.delete(datas_n, i, 0)
        test_label = labels[i]
        train_label = np.delete(labels, i)
        label = k_nearest.k_nearest(k + 1, train_data, train_label, test_data)

        #k近傍法による推定値と実際のラベルが等しければカウントを追加
        if label == test_label:
test_data = pd.read_csv("auto-mpg-test.csv", encoding="utf-8").sample(frac=1)

#データを配列に変換
mpg = auto_mpg_data.loc[:, "mpg"].values
inputs_all = auto_mpg_data.loc[:, [
    "cylinders", "displacement", "weight", "acceleration", "model_year",
    "origin"
]].values
mpg_test = test_data.loc[:, "mpg"].values
inputs_all_test = test_data.loc[:, [
    "cylinders", "displacement", "weight", "acceleration", "model_year",
    "origin"
]].values

#正規化
mpg_n = normalization.normalization(mpg)
inputs_all_n = normalization.normalization(inputs_all)
inputs_all_test_n = normalization.normalization(inputs_all_test)

#線形重回帰の実行
w_all = Linear_multiple_regression.Linear_multiple_regression(
    inputs_all_n, mpg_n)

#決定係数の計算
s_all = np.sum(np.power(mpg_n - np.mean(mpg_n), 2))
s_res = np.sum(np.power(mpg_n - np.dot(inputs_all_n, w_all.T), 2))
R = 1 - (s_res / (len(mpg_n) - 6 - 1)) / (s_all / (len(mpg_n) - 1))

#予測値の計算
mpg_predict = np.dot(inputs_all_test_n, w_all.T) * np.std(mpg) + np.mean(mpg)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from module import Linear_multiple_regression, normalization
from mpl_toolkits.mplot3d import Axes3D

#データの取得
auto_mpg_data =  pd.read_csv("auto-mpg.csv", encoding="utf-8").sample(frac = 1)

#配列に変換
mpg = auto_mpg_data.loc[:, "mpg"].values
inputs = auto_mpg_data.loc[:, ["horsepower", "weight"]].values

#正規化
mpg_n = normalization.normalization(mpg)
inputs_n = normalization.normalization(inputs)

#線形重回帰の実行
w = Linear_multiple_regression.Linear_multiple_regression(inputs_n, mpg_n)

#グラフの描画
fig = plt.figure()

ax = Axes3D(fig)

ax.set_xlabel("horsepower")
ax.set_ylabel("weight")
ax.set_zlabel("mpg")

mesh_x1 = np.arange(inputs_n[:,0].min(), inputs_n[:,0].max(), (inputs_n[:,0].max()-inputs_n[:,0].min())/20)
mesh_x2 = np.arange(inputs_n[:,1].min(), inputs_n[:,1].max(), (inputs_n[:,1].max()-inputs_n[:,1].min())/20)