※機器學習函數調用/繪圖/讀取文件/分析常用代碼總結

機器學習函數調用代碼:
決策樹:from sklearn.tree import DecisionTreeRegressor
隨機森林:from sklearn.ensemble import RandomForestClassifier
線性迴歸from sklearn.linear_model import LinearRegression
邏輯迴歸:from sklearn.linear_model import LogisticRegression
支持向量機:from sklearn.svm import SVC
PCA:from sklearn.decomposition import PCA
K-means聚類:from sklearn.cluster import KMeans
DBSCAN聚類:from sklearn.cluster import DBSCAN
XGboost:from xgboost import XGBClassifier
貝葉斯算法:from sklearn.naive_bayes import GaussianNB

讀取文件代碼:

#讀取CSV文件
data=pd.read_csv("文件名.csv", header=None) 
//header參數:取不取文件頭
//sep=' ' 讀取以空格分割的文件
//文件讀取函數:
def save_new(file_path,save_path):
    # 數據的讀入
    guxilv = pd.read_csv("{}".format(file_path), encoding="gbk"
    ,names=column_title, index_col='時間', parse_dates=True)
    # 數據的存取
    guxilv.to_csv("{}".format(save_path))
#取數據後重置索引列
data=data.reset_index(drop=True)
#數據升序排列
data=data.sort_values(by="dteventtime", ascending=True)

#讀取XLSX文件
data = xlrd.open_workbook("D://文件名.xlsx")    導入xlrd包
sheet0_name=data.sheet_names()[0] #獲取第一個表格的名稱
worksheet=data.sheet_by_name(sheet0_name)
nrows = worksheet.nrows  #獲取行
ncols = worksheet.ncols  #獲取列
worksheet.cell_value(i, 0)  #獲取具體值

#文件太長情況   顯示所有列,以及顯示寬度
pd.set_option('display.max_columns', None)
pd.set_option('max_colwidth',100)
創建多維初始值爲0的矩陣:
m = [[[0 for i in range(9)] for j in range(9)]for z in range(30)]

#數據集合並
pandas.merge 根據一個或多個鍵進行連接。
pandas.concat 使對象在軸上進行粘合或“堆疊”。
combine_first 實例方法允許將重疊的數據拼接在一起。

pd.merge(df1, df2, on="key")
默認情況下,merge做的是內連接,結果中的鍵是兩張表的交集。其他可選的選項
有'left', 'right'和'outer'。外連接是鍵的並集。
pd.merge(df3, df4, left_on='lkey', right_on='rkey')
pd.merge(df1, df2, how='outer')
merge有一個suffixes後綴選項,用於在左右兩邊DataFrame對象的重疊列名後指
定需要添加的字符串。

#取字段滿足條件的數值
data=data[(data["model"]=="101") | (data["model"]=="401")]

繪圖常用代碼:
matplotlib官方繪圖樣例文檔:https://matplotlib.org/gallery/index.html
模板:

作圖之前
import matplotlib.pyplot as plt   #導入作圖庫
plt.rcParams['font.sans-serif'] = ['SimHei']   #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus'] = False  #用來正常顯示負號
plt.figure(figsize = (7,5), dpi=300)         #創建圖像區域,指定比例, 像素
plt.grid(alpha=0.4)  繪製網格, 設置透明度
plt.savefig("/.png")                #保存到本地 

無子圖:

fig = plt.figure()     
ax1 = fig.add_subplot(1, 1, 1)    /一行一列第一列
ax1.plot(X, Y, marker=" ", c=" ")     //繪製X,Y的圖像,形狀爲 marker, 顏色爲c

plt.xticks(rotation =   )                     //設置X刻度旋轉角度

index1=[1,2,3]
ax1.set_xticks(index1)     [::x]取x爲步長
ax1.set_xticklabels(("sunny",  "rainy", "cloudy"))   #依次替換 橫座標索引

plt.xlabel()          //設置X軸標籤
plt.ylabel()          //設置y軸標籤

ax1.set_title("(a)         ", x=-0.06)          #調整子圖標題位置

plt.show()       //顯示圖片

有子圖:

fig = plt.figure()        
ax1 = fig.add_subplot(1, 2, 1)       //一行兩列第一列
ax2 = fig.add_subplot(1, 2, 2)       //一行兩列第二列

ax1.set_xlabel("    ")               //設置子圖1的X軸標籤
ax1.set_ylabel("    ")               //設置子圖2的Y軸標籤

plt.show()       //顯示圖片

折線圖&散點圖

#設置兩條折線的標籤,顏色,線條風格,線條寬度
plt.plot(x, y1, label="樣例1",color="",linestyle="",linewidth="")
plt.plot(x, y2, label="樣例2",color="",linestyle="",linewidth="")
#添加圖例  loc確定位置,參數有best/upper left等
plt.legend(loc=" ")    

散點圖:判斷變量之間存在的關聯趨勢,展示離羣點(分佈規律)
plt.scatter(x, y)

柱狀圖

plt.bar(np.arange(len(df["salary"].value_counts())), df["salary"].value_counts())
plt.axis([0,4,0,1000])   #x軸範圍從0到4,y軸範圍從0到1000

for x,y in zip( np.arange(len(df["salary"].value_counts())), (df["salary"].value_counts()) )
    plt.text(x,y,y, ha="center", va="bottom")      //給柱狀圖設置值

#橫向條形圖
plt.barh()   橫向條形圖
plt.yticks()

import seaborn as sns
sns.set_style()   (備選值 darkgrid, whitegrid, dark, white, ticks)
sns.set_context(context="", font_scale=)
sns.set_palette( sns.color_palette("RdBu".n_colors=7)[5] )   #調色盤                    具體seaborn官網查看具體值
sns.countplot(x="salary", data=df)

繪製多條並列的柱狀圖

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
index = np.arange(n_groups)
bar_width = 0.3               //每列座標間隔
ax.bar(index, a, bar_width, color='g', label='order number')
ax.bar(index + bar_width, means_poi, bar_width, color='b', label='poi category number')
ax.bar(index + bar_width*2, means_poinumber, bar_width, color='r', label='poi number')
ax.set_xlabel('loction')
ax.set_ylabel('number')
ax.set_title('***')
ax.set_xticks(index + bar_width)     //橫座標刻度線位置
ax.set_xticklabels(('m1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9')) ###設置X軸座標刻度值
ax.legend()
fig.tight_layout()
plt.show()

直方圖:主要用於未經統計過的數據

d=  組距
num_bins =(max-min)//d  組數
plt.hist(a, num_bins)                        #頻數分佈直方圖
plt.xticks(range(min(a), max(a)+d, d))

plt.hist(a, num_bins, density=True)   #頻率分佈直方圖

餅狀圖

lb = data["col"].value_counts().index
plt.pie(data["col"].value_counts(normalize=True),explode=explodes,labels=lb,autopct="%1.1f%%")
#explode 突出顯示
#labels 各個餅的標籤
#autopct 顯示各個餅的具體百分比數值

其他可視化工具:
①echarts
②plotly:可視化工具中的github
常用作圖:

#地理數據可視化:
data.plot(kind="scatter", x="longitude", y="latitude", alpha=0.1, s#半徑,c#顏色)
#座標去除科學計數法:
ax.get_xaxis().get_major_formatter().set_useOffset(False)
ax.get_yaxis().get_major_formatter().set_useOffset(False)
#設置座標軸刻度間隔
from matplotlib.pyplot import MultipleLocator
x_major_locator=MultipleLocator(你需要設置的刻度間隔值)
ax3.xaxis.set_major_locator(x_major_locator)

數據分析常用代碼:

預覽數據情況:  data.head()     默認訪問前5行
快速獲取數據集的簡單描述,總行數,每個屬性類型和非空值的數量: data.info() 
查看有多少種分類存在,每種類別下分別有多少區域:   data.value_counts()
顯示數值屬性的摘要:     data.describe()
刪除數據重複值:    data.drop_duplicates()
繪製每個屬性的直方圖: data.hist(bins= ,figsize=( , ))  hist方法依賴於matplotlib

選取特定行列:data.loc[x;y]     選取特定行:data.loc[x,:]

相關性分析:    data.corr()   #相關係數矩陣,即給出任意兩特徵之間的相關係數
corr_matrix = data.corr()
corr_matrix["col"].sort_values(ascending=False)

週期性分析:時間軸

貢獻度分析/帕累託分析:   
cumsum()   #累積計算,依次給出前1,2,3...,n個數的和
cumprod()   #累積計算,依次給出前1,2,3...,n個數的積

數據預處理常用代碼:

特徵歸一化
線性函數歸一化:(data-data.min())/(data.max()-data.min())
零均值歸一化:(data-data.mean())/data.std()
小數定標歸一化:data/10**np.ceil(np.log10(data.abs().max()))

字符串轉化爲時間datetime:
d = datetime.datetime.strptime(str, "%Y/%m/%d %H:%M")     #將str 轉換爲datetime時間
datetime時間轉換爲unix時間戳:
ans_time = time.mktime(xxx.timetuple())   #xxx爲要進行轉換的datetime時間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章