Page 203 - python
P. 203
177
img = mh.imread("mountain2.jpg")
img = mh.colors.rgb2gray(img, dtype=np.uint8)
features.append(mh.features.haralick(img).ravel())
img = mh.imread("mountain3.jpg")
img = mh.colors.rgb2gray(img, dtype=np.uint8)
features.append(mh.features.haralick(img).ravel())
img = mh.imread("mountain4.jpg")
img = mh.colors.rgb2gray(img, dtype=np.uint8)
features.append(mh.features.haralick(img).ravel())
labels = ['sea','sea','sea','sea','sea','mountain','mountain','mountain','mountain']
features = np.array(features)
labels = np.array(labels)
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
model = Pipeline([('preproc', StandardScaler()),('classifier', LogisticRegression())])
model.fit(features,labels)
ตัวอยางที่ 12.15 คําสั่ง %pylab inline เปนการขอใชคําสั่ง numpy และ matplotlib ในการ
สกดคุณลักษณะเดนของภาพใชไลบรารี่ mahotas โดยอิมพอรตและตั้งชื่อวา mh ดวยคําสั่ง import
ั
mahotas as mh จากนั้น ใหตัวแปร features และ labels เปนลีสตวาง คําสั่ง imread() จะอานภาพที
ละไฟล โดยแปลงใหอยูในรูป rgb2gray() คือแปลงจากสีเปนภาพเกรยสเกล จากนั้น ใชคําสั่ง
me.features.haralick() เพื่อสกัดคุณลักษณะเดนของภาพดวยวิธี haralick() แลวแปลงใหเปนอารเรย
ั
ี
เพยงแถวเดียวดวยคําสั่ง raval() จากนั้นนําคุณลักษณะเดนที่สกดไดเก็บไวในตัวแปร features ดวยคําสั่ง
append() ทําซ้ําครบจํานวนภาพที่จะใชสอนโมเดล ไดแก sea1.jpg ถึง sea5.jpg และ mountain1.jpg
ถึง mountain4.jpg
ตัวแปร labels เปนคําตอบ จะตองเรียงใหถูกตองตามลําดับภาพที่ใสลงในตัวแปร features ถา
ิ
ปอนลําดับผิดคือสอนคอมพวเตอรดวยคําตอบที่ผิด จะสงผลตอการพยากรณ หลังจากนั้นแปลงตัวแปร
features และ labels ใหเปนชนิด numpy array ดวยคําสั่ง np.array(ตัวแปร)
การสรางโมเดล Logistic Regression ใชคําสั่ง Pipeline([('preproc', StandardScaler()),
('classifier', LogisticRegression())]) คือการกําหนดใหตัว classifier เปนคลาสของ LogisticRegression
จากนั้นสรางโมเดลดวยคําสั่ง model.fit(features,labels) เมื่อ features คือคุณลักษณะเดนของภาพมี
ทั้งหมด 9 ชุด คือภาพทะเล 5 และภาพภูเขา 4 ภาพ สวนตัวแปร labels คือคําตอบของภาพ คือ 5 ตัว
แปรคือ "sea" และ 4 ตัวหลังคือ "mountain"