FC2ブログ

ミスター失業家の断”職”道場

あるときは”流れのプログラマ”、あるときは”中年失業家”として生きてきた、ミスター失業家の就活、派遣、ソフトウエア業界に対する”恨み節”

Pythonの血糖値予測をリッジ回帰に変えた


from sklearn.linear_model import Ridge
import numpy as np
import matplotlib.pyplot as plt

p1 = np.loadtxt('kettox3.csv', dtype = 'float', delimiter=',', skiprows = 1)

lp = list(p1)
bufx = []
for lpv in lp:
lb = []
lb.append(lpv)
bufx.append(lb)
x_dat = np.array(bufx)
p2 = np.loadtxt('kettoy3.csv', dtype = 'float', delimiter=',', skiprows = 1)
y_dat = np.array(p2)

#reg = linear_model.LinearRegression()
reg=Ridge(alpha=1.0)
reg.fit(x_dat, y_dat)

w = reg.coef_
print('係数:',w)
k = reg.intercept_
print('閾値:',k)

x_axis = np.linspace(start=0, stop=10, num = 50)
plt.ylim(0, 200)
plt.plot(x_dat, y_dat, 'o')
plt.plot(x_axis, w * x_axis + k)
plt.grid(True)
plt.show()

xday = float(input('何日目: '))
yy = w * xday + k
print('予測値 = ', yy)

np.random.seed()
x = np.random.randn() - 0.5
x = x * xday
yy = yy + x
print('誤差付き予測値 = ', yy)

xd = []
xd.append(xday)
xd1 = np.array(xd)
ls = list(y_dat)
ls2 = list(x_dat)
ls2.append(xd1)
ls3 = []
for lss in ls2:
ls3.append(list(lss))

ls4 = list(y_dat)
ls4.append(float(int(yy)))

np.savetxt('kettoy2.csv', ls4, delimiter=',')
wk = []
for lw in ls2:
wk.append(lw[0])

np.savetxt('kettox2.csv', wk, delimiter=',')

p3 = np.loadtxt('kettox2.csv', dtype = 'float', delimiter=',', skiprows = 0)
p4 = np.loadtxt('kettoy2.csv', dtype = 'float', delimiter=',', skiprows = 0)

lp = list(p3)
bufx = []
for lpv in lp:
lb = []
lb.append(lpv)
bufx.append(lb)
x_dat = np.array(bufx)
y_dat = np.array(p4)

#reg = linear_model.LinearRegression()
reg=Ridge(alpha=1.0)
reg.fit(x_dat, y_dat)
w = reg.coef_
print('係数:',w)
k = reg.intercept_
print('閾値:',k)

x_axis = np.linspace(start=0, stop=10, num = 50)
plt.ylim(0, 200)
plt.plot(x_dat, y_dat, 'o')
plt.plot(x_axis,
w * x_axis + k)
plt.grid(True)
plt.show()
スポンサーサイト



  1. 2020/01/23(木) 18:08:49|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

Pythonでのscipyを使った線形計画法のプログラム


import numpy as np
from scipy import optimize

#線形計画法を解く問題
#目的変数
#z = 3x1 + 2x
#制約条件
#3x1 + x2 ≦ 9
#2.5x1 + 2x2 ≦ 12.5
#x1 + 2x2 ≦ 8
#x1, x2 ≧ 0
#x1 = 2,かつ,x2 = 3 のとき,最大値 12

c = np.array([-3,-2])
G = np.array([[3,1],[2.5,2],[1,2]])
h = np.array([[9,12.5, 8]])
x0_bounds = (0, None)
x1_bounds = (0, None)
sol = optimize.linprog(c, G, h, bounds=(x0_bounds, x1_bounds))

print(sol)
print(sol.x)
print(sol.fun)
print((-1)*sol.fun)
  1. 2020/01/17(金) 16:51:51|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

Pythonでナップザック問題を解く例


from ortoolpy import knapsack

weight = [1,1,1,2,2,2,5,5,5] # 重さ
value = [100,100,100,300,300,300,800,800,800] # 値段
capacity = 13 # ナップサックの最大重さ

# ナップサック計算
result = knapsack(weight, value, capacity)

# 結果表示
print('■値段の合計',result[0],'円')
total = 0
print('■組み合わせ')
for i in result[1]:
print(' 重さ:',weight[i],'kg','値段:',value[i],'円')
total += weight[i]
print('■重さの合計',total,'kg')
  1. 2020/01/15(水) 15:50:06|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

Pythonでのランダムフォレストサンプル


#データ加工・処理・分析ライブラリ
import pandas as pd
import numpy as np
import numpy.random as random
import scipy as sp
from pandas import Series, DataFrame
from sklearn.datasets import load_wine

#可視化ライブラリ
import matplotlib.pyplot as plt
import matplotlib as mpl
#import seaborn as sns

#機械学習ライブラリ
from sklearn import ensemble
#from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

wine = load_wine()

data = wine.data
target = wine.target

X_train,X_test,y_train,y_test = train_test_split(data,target,test_size=0.2, random_state=0)

clf = ensemble.RandomForestClassifier(n_estimators=100, random_state=1)

clf = clf.fit(X_train, y_train)

#print(clf.score(X_test, y_test))

predict = clf.predict(X_test)
print(y_test)
print(predict)

print("正解率:",accuracy_score(y_test, predict))
  1. 2020/01/14(火) 18:44:42|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

機械学習の基礎課題13の4


#####################################################################
# 多層パーセプトロン
# 今まででニューロン層(16,16,16,8)が最も成績が良かったのでこれを利用
# random_stateh=none 乱数はあまり影響がみられなかったので
#####################################################################
from sklearn.datasets import fetch_openml
from sklearn import datasets, svm
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import confusion_matrix
import pandas as pd
import seaborn as sns
from sklearn.metrics import accuracy_score

X, y = fetch_openml('mnist_784', version=1, return_X_y=True)

X_train, X_test = X[:60000], X[60000:]
y_train, y_test = y[:60000], y[60000:]

# 最初の60000件を、訓練データと検証データ(10000個)にランダムに分ける
from sklearn.model_selection import train_test_split

X_train, X_valid, y_train, y_valid = train_test_split(X_train, y_train,
test_size=10000, random_state=0)

im_list = X_valid[1].reshape(28,28)
plt.imshow(im_list)

clf = MLPClassifier(solver='adam', alpha=1e-5, hidden_layer_sizes=(16, 16, 16, 8), max_iter=10000, tol=0.0001, random_state=0)
print('学習中(16, 16, 16, 8)…')
clf.fit(X_train, y_train)

# 評価データを分類器に与え、予測を得る
print('評価データでの評価')
# データ数をtotalに格納
result = clf.predict(X_valid)
# ターゲット(正解)と予測が一致した数をsuccessに格納
# 正解率をパーセント表示
print('正解率')
print(accuracy_score(y_valid, result)*100.0)

# テストデータを分類器に与え、予測を得る
print('テストデータでの評価')
# データ数をtotalに格納
result = clf.predict(X_test)
# ターゲット(正解)と予測が一致した数をsuccessに格納
# 正解率をパーセント表示
print('正解率')
print(accuracy_score(y_test, result)*100.0)

print('混同行列表示')
labels = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
cmx_data = confusion_matrix(y_test, result, labels=labels)
df_cmx = pd.DataFrame(cmx_data, index=labels, columns=labels)

plt.figure(figsize = (10,7))
sns.heatmap(df_cmx, annot=True)
plt.show()
  1. 2019/12/10(火) 16:43:29|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0
次のページ