{"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"}},"nbformat":4,"nbformat_minor":0,"cells":[{"cell_type":"code","execution_count":1,"metadata":{"_cell_guid":"8a4fa4e9-c9e4-91a2-94aa-180e83f8af47","_active":false},"outputs":[],"source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport os, cv2, random\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\nfrom subprocess import check_output\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.preprocessing import MinMaxScaler \nfrom sklearn.preprocessing import OneHotEncoder\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.grid_search import GridSearchCV\nfrom PIL import Image\nimport os\nfrom subprocess import check_output\nprint(check_output([\"ls\", \"../input\"]).decode(\"utf8\"))\n\n# Any results you write to the current directory are saved as output.","execution_state":"idle"},{"cell_type":"code","execution_count":2,"metadata":{"_cell_guid":"0a9d6d24-3646-9cd5-c163-8f70f50d9d98","_active":false},"outputs":[],"source":"#读取图像\ndef getData():\n    TRAIN_DIR = '../input/train/'\n    TEST_DIR = '../input/test/'\n    train_dogs =   [(TRAIN_DIR+'dog.'+str(num)+'.jpg', 1) for num in range(9375,12500)]\n    train_cats =   [(TRAIN_DIR+'cat.'+str(num)+'.jpg', 0) for num in range(9375,12500)]\n    #取测试集，这个地方需要提前占位，-1就是占位符。\n    test_images =  [(TEST_DIR+str(num)+'.jpg', -1) for num in range(1,12501)]\n    train_images = train_dogs+ train_cats\n    random.shuffle(train_images)\n    return train_images,test_images\ntrain_images,test_images = getData()\n#print(train_images)","execution_state":"idle"},{"cell_type":"code","execution_count":3,"metadata":{"_cell_guid":"b31897cc-fd40-34a7-b440-84dd5f7aab61","_active":false},"outputs":[],"source":"#将图像转成dataframe的数组\ndef imgToDataFrame(images):\n    df1 = pd.DataFrame(columns = [i for i in range(3*256)])\n    df2 = pd.DataFrame(columns = [0])\n    listx = []\n    listy = []\n    #i=1\n    #print(len(images))\n    for img in images:\n        aimg = Image.open(img[0])\n        aimg=aimg.resize((64,64),Image.ANTIALIAS)\n        \n        pix_val = list(aimg.getdata())\n        pix_val_flat = [x for sets in pix_val for x in sets]\n        #print(pix_val_flat)\n        pix_val_flat = aimg.histogram()\n        listx.append(pix_val_flat)\n        listy.append(img[1])\n        #df1=df1.append(pd.DataFrame(np.array([pix_val_flat]),columns = [i for i in range(3*64*64)]))\n        #df2=df2.append(pd.DataFrame(np.array([img[1]]),columns = [0]))\n        #if i>=100:break\n        #i+=1\n    df1 = pd.DataFrame(listx,columns = [i for i in range(256*3)])\n    df2 = pd.DataFrame(listy,columns = [0])\n    return df1,df2\nxtrain,ytrain = imgToDataFrame(train_images)\nxtest,_ = imgToDataFrame(test_images)\nxtrain.head()","execution_state":"idle"},{"cell_type":"code","execution_count":4,"metadata":{"_cell_guid":"56b0d243-cd4e-09e3-d4c4-99e8e723b732","_active":false},"outputs":[],"source":"from sklearn.linear_model import LogisticRegression\nfrom sklearn.svm import SVC, LinearSVC\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.naive_bayes import GaussianNB\n#from sklearn.cross_validation import cross_val_score  \nfrom sklearn.decomposition import PCA","execution_state":"idle"},{"cell_type":"code","execution_count":15,"metadata":{"_cell_guid":"2f74ca51-3028-fcd7-eae3-728ef8a7b131","_active":true,"collapsed":false},"outputs":[],"source":"#随机森林\n#forest = RandomForestClassifier(n_estimators=50)\n#param_grid = { \n #   'n_estimators': [100,200,300,400,500],  'max_features': ['auto', 'log2']\n#}\n#CV_forest= GridSearchCV(estimator=forest, param_grid=param_grid, cv=5,scoring='neg_log_loss')\n#CV_forest.fit(xtrain,ytrain)\n#Ytest = CV_forest.predict_proba(xtest)\n#forest.fit(xtrain,ytrain)\n#Ytest = forest.predict_proba(xtest)\n#print(Ytest)\nytrain[0]","execution_state":"idle"},{"cell_type":"code","execution_count":16,"metadata":{"_cell_guid":"09a94472-8f30-5058-18be-95cc68245dcb","_active":false,"collapsed":false},"outputs":[],"source":"params = {'C':[1, 10, 50, 100, 500, 1000], 'tol': [0.001, 0.0001, 0.005]}\nlogic = LogisticRegression()\nCV_logic= GridSearchCV(estimator=logic, param_grid=params, cv=5,scoring='neg_log_loss')\nprint(len(xtrain))\nprint(ytrain.values)\nCV_logic.fit(xtrain,ytrain[0])\nYtest = CV_logic.predict_proba(xtest)\n#logic.fit(xtrain,ytrain)\n#Ytest = logic.predict_proba(xtest)\nprint(Ytest)","execution_state":"idle"},{"cell_type":"code","execution_count":17,"metadata":{"_cell_guid":"702e05d1-1a6e-baaf-9bcc-d10ccfc04386","_active":false},"outputs":[],"source":"#组合成结果\nresult = pd.DataFrame(Ytest,columns = ['label','label1'])\nresult.insert(0,\"id\",[i for i in range(1,len(Ytest)+1)])\nresult = result.drop('label1',axis = 1)\nresult.head()\nresult.to_csv('dogvscatsamples.csv', index=False)","execution_state":"idle"}]}