Python x 機器學習
經過前人的努力,現在已經有很多的機器學習的工具可以讓我們使用。
Scikit-LearnScikit-Learn是一套很常被使用的機器學習工具,若要在Python使用,其include函式庫的名稱為sklearn。
Classifier每個classifier都對應著一套機器學習的演算法,Scikit-Learn裡面有很多個classifier。若要使用某個classifier,則在使用前,我們需要先從sklearn的ensemble裡去引用該classifier,然後呼叫它,就可以使用fit()、predict()等函數,進行訓練以及測試,在機器學習世界的潛規則(?中,一堆資料裡,有80% 會拿來訓練,剩下的20% 則用來測試。
至於要怎麼取得訓練用的資料和測試用的資料,這裡提供兩種方式:1.使用Scikit-Learn裡提供的train_test_split函式來分類用法如下:
先放入data,target
設定test_size或是train_size(只要其中一個就好)
如果值為小數,代表比例。
如果值為整數,代表數量。
random_state就是該組隨機數的編號,如果 ...
ZeroJudge一行解
這篇文章收錄所有我能一行解且不用分號 的題目
基礎題庫a001. 哈囉
AC(19ms,3.3MB)
1print('hello,',input())
a002. 簡易加法
AC(21ms,3.3MB)
1print(sum(map(int,input().split())))
b757. 頸美椰子樹
AC(18ms,3.4MB)
1print('%g'%(float(input())*9/5+32))
c185. Hey Jude
AC(18ms,3.3MB)
1print('Hey',input())
c221. A+B problem (駭客題)這題蠻特別的,我們只需要輸出兩個都在int範圍內但是加起來會超過int範圍 的整數就AC了。
AC(2ms,340KB)
1print('2147483646 2')
c316. 最遠點對!前傳這題如果有看討論區,都知道可以投機取巧,直接輸入313、472這兩個數拿到這題的AC。不過我也有認真解這一題:我的解法
AC(26ms,3.3MB) ...
HTML5筆記
最近借了一本和網頁程式交易 有關的書,裡頭有用到許多技術,所以我想在這一篇文記錄下關於HTML5的筆記。
使用meta charset=”UTF-8”讓網頁支援繁體中文,不會出現亂碼。
div算是HTML5的容器(container),本身沒任何的特殊意義,也不帶任何功能。不過包起來比較適合CSS和JavaScript去做調整。
style可以直接將CSS的美化相關的指令放入
class則是輸入一個ID,需要先另外創建一個CSS檔案,在裡面放入這個ID的設定,然後再引用到class裡面。
像是下面的div style=”color:#0000FF”和div class=”poem”是一樣意思
hr可以畫一條水平線
ul和ol都能當作列表,只不過ul是沒有數字的,然後ol有,而且也可以自訂從哪個數字開始,或甚至順序顛倒。
列表的每個項目都要用li包住
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748<!DOCTYPE html> ...
更新我的個人Blog遇到的問題
TypeError: cover.indexOf is not a function7/21的時候,想說我又多寫一些文章,也有修改之前貼出來的文章,所以想要hexo cl(清除靜態網頁)完再hexo d -g(發布網頁)。但是當我要hexo d -g的時候,出現了如標題的這則訊息。
上網查了以後發現,這個錯誤會發生的原因是因為cover這個變數在被indexOf()使用之前,型別並不是string,因為indexOf()這個函式的功能是找出某字元在某字串 的位置,所以只要把cover轉成string就能解除這個錯誤。
Step 1依據cmd給的錯誤訊息,找到random_cover.js。
Step 2找到這行
1const cover = data.cover
把它改成
1const cover = data.cover + ""
這個動作可以將cover強制轉成string的型別,在JavaScript裡其實還有很多種轉成string的方式,這裡提供其中一種。
Step 3問題解決,你又可以繼續發布任何東西到你架設的網站上了。
參考:
XXX.indexOf i ...
ZeroJudge - 數學題
這篇主要是記錄一些難在數學觀念,或是考點主要是數學的題目。
a006. 一元二次方程式這題的解法就是直接套一元二次方程式的公式解 ,為了讓程式的可讀性變高,我才使用d e f這三個變數。
註:在解的時候一直遇到”ValueError: math domain error”這個錯誤,查了才發現sqrt()裡面的數值除了不能為負,也不能為整數。
AC (18ms, 3.4MB)
1234567891011import matha,b,c=map(int,input().split())d = b**2-4*a*ce = b/(-2*a)if d>0: f = math.sqrt(d)/2 print('Two different roots x1=%d , x2=%d'%(int(e+f),int(e-f)))elif d==0: print('Two same roots x=%d'%int(e))else:print('No real root')
a010. 因數分解如果一個正整數的因數,除了1 ...
特殊題
對我來說不知道要用什麼演算法,或是沒用任何演算法卻有挑戰性的題目都會放這。
f855: 線段覆蓋長度 加強版這題是b966的進階版,這題如果用暴力法,也就是開一個空間為1000萬的array,有覆蓋到的為true,沒蓋到的為false,在b966據說是行得通,可以AC的,不過這題就不可能,畢竟給的時間和空間限制都被壓縮很多。
我的作法是先依據線的左端位置從左排到右,然後設定一個區間,並檢查這些線是否和這個區間有聯集,如果某條線完全沒有,就將它當作新的區間,並將前一個區間的長度加到總長度裡。如果有的話,就看區間的最左和最右需不需要更新。等所有線都檢查完後,將剩下的區間加到總長度就能得到答案。
AC (7ms, 428KB)
1234567891011121314151617181920212223242526272829303132333435363738#include<iostream>#include<algorithm>using namespace std;typedef struct node{ int l,r;}line ...
Python筆記
學校教的程式語言是C,C++和Python我是自學的,C++和C除了些微的語法不同,以及多了很多工具,兩者的結構很接近,所以我學C++挺快上手,只需要理解STL怎麼運用即可。但Python就不太一樣,語法不同,結構也和C不太一樣,所以我想藉由這篇文章記錄一下若要用Python做一些事情應該要怎麼下指令,不只是記錄,也順便拿題目來練習,現學現用也增加對Python的手感。
Python輸出不換行Python的print預設會將內容輸出後換一行,如果不要換行,則要在後面加上end=’’。
實戰演練舉b971 等差數列為例
12345ae, an, d = map(int, input().split())if d<0: an-=2for i in range(ae, an+1, d): print(i,end=' ')
如果最後一行是print(i)的話,那測資輸入1 9 2,會輸出。
1234513579
加上end=’ ‘,輸出變成。
11 3 5 7 9
Python宣告陣列實戰演練舉c276 沒有手機的下課時間為例。
123456789101 ...
字串
b969. hello, everyone學校教的程式語言課是用C,而C++我是自學,目前對於C++字串的使用還不是很熟練,所以想藉由這題熟悉一下用法。getline(cin, string)可以讀取一整行含空白的string,而string.substr(a, b)這個函式則是從string中第a個字元開始擷取b個字元。這題蠻簡單的,就是將第一行的輸入去掉空白,分別放入vector裡,然後直接輸出”第二行的內容, vec[i]”。
AC (2ms, 332KB)
1234567891011121314151617181920212223#include<iostream>#include<string>#include<vector>using namespace std;int main(){ int i, pi=0, j; string name, greet; vector<string> vec; getline(cin, name); getline(cin, greet); ...
遞迴問題集
當初在學遞迴的結構時,一直對於遞迴該怎麼用很是不解。所以想藉由這篇文章做些練習讓我能更熟悉遞迴怎麼用。
b911 我想跟Kevin借筷子系列4這題可以用DP的概念去解,假設Kevin有7隻筷子1 2 3 4 5 6 7,先砍4,剩下1 2 3 0 1 2 3,而1 2 3又是另外一個問題。這正是DP的用小問題去推出大問題 的精神。
AC (4ms, 316KB)
12345678910111213141516#include<iostream>using namespace std;long long cut(long long n){ if(n==2){return 2;} else if(n==1){return 1;} return cut(n/2)+1;}int main(){ long long n; while(cin>>n){ cout<<cut(n)<<endl; } ret ...
Quick Sort
快速排序法,其時間複雜度為O(nlogn),適合用在資料量較大的群體。當初在學資料結構、演算法的時候,我覺得Quick Sort的方法實在有點複雜,所以當我需要排序的時候,我都是用Merge Sort,或是有時候直接用C的qsort,以及C++的sort。
操作這是一個循環,先在一堆資料中隨機找一個支點(pivot),並用兩個箭頭,一個從資料的最前端開始往後找比支點大的資料,一個從資料的最尾端開始往前找比支點小的資料。兩個箭頭都找到資料後,就讓這兩筆資料互換,並繼續同樣的動作直到兩個箭頭碰到彼此,並讓pivot和兩個箭頭中比pivot小的資料 互換,然後進行下個循環,就這樣一直交換到整堆資料達到ascended order才結束。
範例假設我們今天需要對[69, 81, 30, 38, 9, 2, 47, 61, 32, 79]這個array做quick sort,那下面兩張圖就是quick sort的過程。
紅色背景:pivot黑色背景:確定位置的資料紫色背景:上一步驟中有交換的資料土色背景:暫時用不到的區域
實作參照上面示意圖的方法,用C實現。
123456789101112131 ...