カテゴリ: プログラミング


train.describe()
train.info()

X = train.iloc[:,1:9]
y = train['Class']
X_train, X_val, y_train, y_val = train_test_split(X, y)
X_test = test.iloc[:,1:9]

#reg = xgb.XGBRegressor()
#reg_cv = GridSearchCV(reg, {'max_depth': [2,4,6], 'n_estimators': [25,50,100]}, verbose=1)
#reg_cv.fit(X_train, y_train)
#reg_cv.best_params_

para = {'max_depth':4, 'n_estimators':50}
reg = xgb.XGBRegressor(**para)
reg.fit(X_train, y_train)

y_pred = reg.predict(X_train)
y_val_pred = reg.predict(X_val)
y_test = reg.predict(X_test)

y_pred[y_pred<0] = 0
y_pred[y_pred>1] = 1
y_val_pred[y_val_pred<0] = 0
y_val_pred[y_val_pred>1] = 1
y_test[y_test<0] = 0
y_test[y_test>1] = 1

submission['Class'] = y_test
submission.to_csv("submission.csv", index=False)

juliaで伝搬演算


using FFTW
using PyPlot
using BenchmarkTools

nx = 200;
ny = 200;
nz = 200;
dx = 0.25; #um
dy = 0.25; #um
dz = 0.25; #um
lam = 1; #um
dn = 0.01;

# make OTF
fx = fftshift(range(-1/dx/2, 1/dx/2-1/(nx*dx), length=nx));
fy = fftshift(range(-1/dy/2, 1/dy/2-1/(ny*dy), length=ny));
FX = repeat(transpose(fx), ny);
FY = repeat(fy, 1, nx);
temp = repeat([(1/lam)^2], ny, nx)
#temp2 = repeat(temp, inner=(length(fy)))
tempfz = temp - FX.^2 - FY.^2;
tempfz = (tempfz.>0).*tempfz;
FZ = sqrt.(tempfz);
OTFdz = exp.(im*2*pi*dz*FZ);

# make sample
x = range(-dx*nx/2, dx*(nx/2-1), length=nx);
y = range(-dy*ny/2, dy*(ny/2-1), length=ny);
z = range(-dz*nz/2, dz*(nz/2-1), length=nz);
X = repeat(transpose(x), ny, 1, nz);
Y = repeat(y, 1, nx, nz);
Z = repeat(reshape(z, 1, 1, nz), ny, nx);
#X = repeat(tempX, 1, 1, nz);
#[X, Y, Z] = np.meshgrid(x,y,z)
r = sqrt.(X.^2 + Y.^2 + Z.^2);
sampleIndex = r.<4;
sample = exp.(im*2*pi*sampleIndex*dn*dz/lam);
# propergation

runtime = @elapsed begin

    e1 = ones(ny, nx);
   
    e = Complex.(zeros(ny, nx, nz), zeros(ny, nx, nz));
    for i_z=1:nz
        global e1
        global e
        e2 = e1.*sample[:,:,i_z];
        e1 = ifft(fft(e2).*OTFdz);
        e[:,:,i_z] = e2;
    end

end

imshow(abs.(e[50,:,:]));
colorbar();
imshow(angle.(e[50,:,:]));
colorbar();


pythonで伝搬演算

import numpy as np
import matplotlib.pyplot as plt
import time

nx = 128
ny = 128
nz = 128
dx = 0.25 #um
dy = 0.25 #um
dz = 0.25 #um
lam = 1 #um
dn = 0.01

# make OTF
fx = np.fft.fftshift(np.linspace(-1/dx/2, 1/dx/2-1/(nx*dx), nx))
fy = np.fft.fftshift(np.linspace(-1/dy/2, 1/dy/2-1/(ny*dy), ny))
[FX, FY] = np.meshgrid(fx, fy)
tempfz = (1/lam)**2 - FX**2 - FY**2
tempfz = (tempfz>0)*tempfz
FZ = np.sqrt(tempfz)
OTFdz = np.exp(1j*2*np.pi*dz*FZ)

# make sample
x = np.linspace(-dx*nx/2, dx*(nx/2-1), nx)
y = np.linspace(-dy*ny/2, dy*(ny/2-1), ny)
z = np.linspace(-dz*nz/2, dz*(nz/2-1), nz)

[X, Y, Z] = np.meshgrid(x,y,z)
r = np.sqrt(X**2 + Y**2 + Z**2)
sampleIndex = r<4
sample = np.exp(1j*2*np.pi*sampleIndex*dn*dz/lam)
time_sta = time.time()

e1 = np.ones([nx, ny])
e = np.zeros([nx,ny,nz], complex)
for i_z in range(nz):
    e2 = e1*sample[:,:,i_z]
    e1 = np.fft.ifft2(np.fft.fft2(e2)*OTFdz)
    e[:,:,i_z] = e2

time_end = time.time()
tim = time_end - time_sta
print(tim)

plt.imshow(np.abs(e[nx>>1,:,:]))
plt.show()
plt.imshow(np.angle(e[nx>>1,:,:]))
plt.show()


python openCVでカメラ画像を取得して、tkinterのcanvasに表示。

import tkinter as tk
import cv2
from PIL import Image, ImageTk
import numpy as np

class mainwin():
    def __init__(self):
        self.root = tk.Tk()

        self.label2 = tk.Label(self.root, text='exposure auto\n 3:auto / 1:manual')
        self.label2.grid(row=0, column=1)
        self.textbox2 = tk.Entry()
        self.textbox2.insert(0, "3")
        self.textbox2.grid(row=1, column=1)
        self.btn4 = tk.Button(self.root, text='set auto expo', command=self.click4 )
        self.btn4.grid(row=2, column=1)
        self.label1 = tk.Label(self.root, text='exposure')
        self.label1.grid(row=3, column=1)
        self.textbox1 = tk.Entry()
        self.textbox1.insert(0, "256")
        self.textbox1.grid(row=4, column=1)
        self.btn3 = tk.Button(self.root, text='set exposure', command=self.click3 )
        self.btn3.grid(row=5, column=1)
        self.btn1 = tk.Button(self.root, text='start', command=self.click1 )
        self.btn1.grid(row=6, column=1)
        self.btn2 = tk.Button(self.root, text='stop', command=self.click2 )
        self.btn2.grid(row=7, column=1)
        self.image1 = tk.Canvas(self.root, height=480, width=640)
        self.image1.grid(row=0, column=0, rowspan=8)

        data = np.ones((480, 640))*100
        self.imdata = np.uint8(data)

        self.image1.img1 = ImageTk.PhotoImage(image=Image.fromarray(self.imdata))
        self.item = self.image1.create_image(1, 1, anchor=tk.NW, image=self.image1.img1)

        self.exprop = 16.0
        self.key = False
        
        self.root.mainloop()
 
    def dispimg(self):
        if self.key:
            ret, frame = self.cap.read()
            data = frame[:,:,0]
            self.image1.img1 =  ImageTk.PhotoImage(image=Image.fromarray(data))
            self.image1.itemconfig(self.item, image=self.image1.img1)

            self.root.after(30, self.dispimg)

    def click1(self):
        if self.key==False:
            self.cap = cv2.VideoCapture(0)

            self.key = True
            self.dispimg()

    def click2(self):
        self.key = False
        self.cap.release()

    def click3(self):
        self.exprop = np.float32(self.textbox1.get())
        self.cap.set(cv2.CAP_PROP_EXPOSURE, self.exprop)

    def click4(self):
        self.auto_expo = np.float32(self.textbox2.get())
        self.cap.set(cv2.CAP_PROP_AUTO_EXPOSURE, self.auto_expo)

app = mainwin()

tkinterで画像を表示
canvasを利用した場合
        self.image1 = tk.Canvas(self.root, height=260, width=194)

        self.image1.img1 = ImageTk.PhotoImage(image=Image.fromarray(self.imdata))
        self.item = self.image1.create_image(1, 1, anchor=tk.NW, image=self.image1.img1)
        self.image1.itemconfig(self.item, image=self.image1.img1)
canvasに画像を作るとき、更新するときのimageをcanvasのクラスの変数にする。

import tkinter as tk
import cv2
from PIL import Image, ImageTk
import numpy as np

class mainwin():
    def __init__(self):
        self.root = tk.Tk()

        self.label1 = tk.Label(self.root, text='gain')
        self.label1.grid(row=0, column=1)
        self.textbox1 = tk.Entry()
        self.textbox1.insert(0, "1")
        self.textbox1.grid(row=1, column=1) 
        self.btn3 = tk.Button(self.root, text='set gain', command=self.click3 )
        self.btn3.grid(row=2, column=1) 
        self.btn1 = tk.Button(self.root, text='start', command=self.click1 )
        self.btn1.grid(row=3, column=1) 
        self.btn2 = tk.Button(self.root, text='stop', command=self.click2 )
        self.btn2.grid(row=4, column=1) 
        self.image1 = tk.Canvas(self.root, height=260, width=194)
        self.image1.grid(row=0, column=0, rowspan=5) 

        data = cv2.imread("img1.png")
        self.imdata = np.uint8(data[:,:,0])

        self.image1.img1 = ImageTk.PhotoImage(image=Image.fromarray(self.imdata))
        self.item = self.image1.create_image(1, 1, anchor=tk.NW, image=self.image1.img1)

        self.gain = 1.0
        self.key = False
        
        self.root.mainloop()
  
    def dispimg(self):
        if self.key:
            self.image1.img1 =  ImageTk.PhotoImage(image=Image.fromarray(self.imdata))
            self.image1.itemconfig(self.item, image=self.image1.img1)

            self.imdata = cv2.flip(self.imdata, 1)

            self.root.after(1000, self.dispimg)

    def click1(self):
        if self.key==False:

            self.key = True
            self.dispimg()

    def click2(self):
        self.key = False

    def click3(self):
        self.gain = np.float(self.textbox1.get())
        data = self.imdata
        data = data.astype(np.float32)*self.gain
        self.imdata = np.uint8((data>255)*255 + (data<=255)*data)

        self.image1.img1 =  ImageTk.PhotoImage(image=Image.fromarray(self.imdata))
        self.image1.itemconfig(self.item, image=self.image1.img1)

app = mainwin()

↑このページのトップヘ