版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
?在本教程中,您將學(xué)習(xí)如何構(gòu)建線性回歸模型。這是您在學(xué)習(xí)機器學(xué)習(xí)時首先要做的事情之一,因此它將幫助您邁出進(jìn)入這個競爭激烈的市場的第一步。???目錄目錄???先決條件什么是線性回歸?評估指標(biāo)R平方均方根誤差線性回歸示例-汽車價格預(yù)測模型導(dǎo)入所需的包:導(dǎo)入數(shù)據(jù)集預(yù)處理數(shù)據(jù)集如何找到異常值分析數(shù)據(jù)集雙變量分析銷售價格與數(shù)字特征雙變量分析銷售價格與分類特征雙變量分析分類變量編碼相關(guān)性分析如何構(gòu)建模型標(biāo)準(zhǔn)化數(shù)據(jù)集訓(xùn)練模型如何評估模型使用K折交叉驗證評估模型結(jié)果可視化結(jié)論先決條件使用IDE(最好是VSCode)的中等水平經(jīng)驗對PythonNotebook(.pynb)文件的基本了解對Python編程語言有很好的理解Pandas(處理數(shù)據(jù)幀)、Numpy、ScikitLearn和Matplot庫的基本知識一些統(tǒng)計學(xué)知識有助于分析數(shù)據(jù)什么是線性回歸?線性回歸是一種監(jiān)督學(xué)習(xí)方法,其中預(yù)測輸出本質(zhì)上是連續(xù)的。例如,價格預(yù)測、標(biāo)記預(yù)測等。線性回歸是一種基本的統(tǒng)計和機器學(xué)習(xí)技術(shù),用于對因變量(也稱為目標(biāo)變量或響應(yīng)變量)與一個或多個自變量(預(yù)測變量或特征)之間的關(guān)系進(jìn)行建模。它的目的是建立一個最能代表這些變量之間關(guān)聯(lián)的線性方程,使我們能夠做出預(yù)測并從數(shù)據(jù)中得出見解。線性回歸的主要目標(biāo)是找到“最佳擬合”線(或更高維度的超平面),以最小化預(yù)測值和實際觀測值之間的差異。這條最佳擬合線由以下形式的線性方程定義:Y=b0?+b1?X1?+b2?X2?+...+bn?Xn?在這個等式中:Y代表我們想要預(yù)測的因變量。X1,X2,...,Xn是自變量或特征。b0是截距(當(dāng)所有X值均為零時Y的值)。b1,b2,...,bn是確定每個自變量和因變量之間關(guān)系的系數(shù)。線性回歸假設(shè)預(yù)測變量和目標(biāo)變量之間存在線性關(guān)系。該模型的目標(biāo)是估計系數(shù)(b0,b1,...,bn),以最小化訓(xùn)練數(shù)據(jù)中預(yù)測值與實際值之間的平方差之和。此過程通常稱為“擬合模型”。評估指標(biāo)線性回歸模型的評估指標(biāo)是:決定系數(shù)或R平方(R2)均方根誤差(RSME)讓我們看看它們分別是什么。R平方R-Squared描述了開發(fā)模型捕獲的變化量。它始終介于0和1之間。R平方的值越高,模型與數(shù)據(jù)的擬合程度越好。均方根誤差RMSE測量模型生成的預(yù)測值與數(shù)據(jù)集中的實際觀測值之間的誤差或殘差的平均大小。它的范圍始終在0和正無窮大之間。RMSE值越低表明預(yù)測性能越好。線性回歸示例-汽車價格預(yù)測模型在此示例中,我們將嘗試通過構(gòu)建線性回歸模型來預(yù)測汽車價格。我在Kaggle中發(fā)現(xiàn)了\o"這個問題"這個問題和數(shù)據(jù)集。我注意到有一個針對這個問題的\o"提交"提交,這是完美的。事實上,我通過采用該解決方案的一部分來構(gòu)建我的解決方案。讓我們深入探討這個問題。我們得到了一個二手車數(shù)據(jù)集,其中包含汽車名稱、年份、售價、當(dāng)前價格、行駛公里數(shù)、燃料類型、賣家類型、變速箱以及賣家是否是二手車所有者。我們的目標(biāo)是預(yù)測汽車的售價。我們來探討一下解決方案。導(dǎo)入所需的包:您將需要各種軟件包來解決此問題。以下是導(dǎo)入它們的方法:importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassnsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLinearRegressionfromsklearnimportmetricsfromsklearn.model_selectionimportKFoldfromsklearn.pipelineimportmake_pipelinefromstatsmodels.stats.diagnosticimportnormal_adfromstatsmodels.stats.outliers_influenceimportvariance_inflation_factorfromstatsmodels.stats.stattoolsimportdurbin_watsonfromscipyimportstats導(dǎo)入數(shù)據(jù)集
可以從我的\o"Github存儲庫"Github存儲庫下載。df=pd.read_csv('./cardata.csv')導(dǎo)入數(shù)據(jù)集預(yù)處理數(shù)據(jù)集下面的代碼顯示了列及其數(shù)據(jù)類型和行數(shù)。我們的數(shù)據(jù)集有9列和301行。()用于查找數(shù)據(jù)幀信息的命令,例如列、數(shù)據(jù)類型、行數(shù)等。
?“Car_Name”列描述汽車名稱。我們的數(shù)據(jù)集中應(yīng)忽略該字段。這是因為,只有汽車的功能才重要,而不是它的名稱。以下代碼返回數(shù)據(jù)集中唯一汽車名稱的數(shù)量。df['Car_Name'].nunique()Car_Name查找列中唯一條目的數(shù)量我們的數(shù)據(jù)集中有98個獨特的汽車名稱。?唯一汽車名稱的數(shù)量顯然,它不會給我們的數(shù)據(jù)集添加任何意義,因為類別太多。讓我們刪除該列。df.drop('Car_Name',axis=1,inplace=True)刪除Car_Name列該數(shù)據(jù)集具有名為“Year”的列。理想情況下,我們需要購買/出售汽車的年份。因此,我們將其轉(zhuǎn)換為“年齡”并刪除“年份”列。df.insert(0,"Age",df["Year"].max()+1-df["Year"])df.drop('Year',axis=1,inplace=True)“車齡”是通過查找數(shù)據(jù)集中可用的最大年份與特定汽車年份之間的差異來計算的。這是因為,我們的計算將特定于該特定時間段和該數(shù)據(jù)集。?如何找到異常值異常值是與其他觀察值顯著不同的數(shù)據(jù)點。它們可能會導(dǎo)致模型的性能下降。?分類列的數(shù)據(jù)類型為“對象”。讓我們將數(shù)字列和分類列分組到NumPy數(shù)組中。數(shù)組中的前5個元素將是數(shù)字列,其余3個元素將是分類列。我們可以使用庫在列中繪制數(shù)據(jù)seaborn。分類列將包含多個條形,而數(shù)字列將包含單個條形。讓我們嘗試使用以下代碼查找數(shù)據(jù)集中的異常值:sns.set_style('darkgrid')colors=['#0055ff','#ff7000','#23bf00']CustomPalette=sns.set_palette(sns.color_palette(colors))OrderedCols=np.concatenate([df.select_dtypes(exclude='object').columns.values,df.select_dtypes(include='object').columns.values])fig,ax=plt.subplots(2,4,figsize=(15,7),dpi=100)fori,colinenumerate(OrderedCols):x=i//4y=i%4ifi<5:sns.boxplot(data=df,y=col,ax=ax[x,y])ax[x,y].yaxis.label.set_size(15)else:sns.boxplot(data=df,x=col,y='Selling_Price',ax=ax[x,y])ax[x,y].xaxis.label.set_size(15)ax[x,y].yaxis.label.set_size(15)plt.tight_layout()plt.show()用于查找每列中的異常值并將其繪制為圖表的代碼?數(shù)據(jù)集中的異常值確定讓我們嘗試使用四分位數(shù)范圍規(guī)則來查找異常值。這是基于四分位數(shù)的概念,將數(shù)據(jù)集分為四個相等的部分。IQR(四分位數(shù)范圍規(guī)則)規(guī)則特別關(guān)注數(shù)據(jù)中間50%內(nèi)的值范圍,并使用該范圍來識別潛在的異常值。我們必須找到分類列中每個唯一值的最小和最大分位數(shù)值,并過濾掉不適合目標(biāo)列(銷售價格)第25個和75個百分位的異常值樣本。另一方面,數(shù)值列中的異常值可以通過同一列的第25個和第75個百分位數(shù)進(jìn)行過濾。我們不需要針對目標(biāo)列進(jìn)行過濾。outliers_indexes=[]target='Selling_Price'forcolindf.select_dtypes(include='object').columns:forcatindf[col].unique():df1=df[df[col]==cat]q1=df1[target].quantile(0.25)q3=df1[target].quantile(0.75)iqr=q3-q1maximum=q3+(1.5*iqr)minimum=q1-(1.5*iqr)outlier_samples=df1[(df1[target]<minimum)|(df1[target]>maximum)]outliers_indexes.extend(outlier_samples.index.tolist())forcolindf.select_dtypes(exclude='object').columns:q1=df[col].quantile(0.25)q3=df[col].quantile(0.75)iqr=q3-q1maximum=q3+(1.5*iqr)minimum=q1-(1.5*iqr)outlier_samples=df[(df[col]<minimum)|(df[col]>maximum)]outliers_indexes.extend(outlier_samples.index.tolist())outliers_indexes=list(set(outliers_indexes))print('{}outlierswereidentified,whoseindicesare:\n\n{}'.format(len(outliers_indexes),outliers_indexes))顯示檢測到的異常值的索引的代碼通過運行上面的代碼,我們發(fā)現(xiàn)數(shù)據(jù)集中有38個異常值。?但請記住,刪除異常值并不總是正確的決定。它們可以是合理的觀察結(jié)果,在決定是否丟棄異常值之前調(diào)查異常值的性質(zhì)非常重要。我們可以在兩種情況下刪除異常值:異常值是由于錯誤輸入或測量的數(shù)據(jù)造成的異常值產(chǎn)生顯著關(guān)聯(lián)讓我們進(jìn)一步挖掘并找到完美的異常值。為此,我們假設(shè)如果售價超過330萬盧比,或者汽車的行駛里程超過40萬公里,那么這些都是異常值。我們將它們標(biāo)記為綠色。保存變量中的所有索引removing_indices。使用庫以散點圖格式繪制它們seaborn,將每列與我們的目標(biāo)列進(jìn)行比較。#OutliersLabelingdf1=df.copy()df1['label']='Normal'df1.loc[outliers_indexes,'label']='Outlier'#RemovingOutliersremoving_indexes=[]removing_indexes.extend(df1[df1[target]>33].index)removing_indexes.extend(df1[df1['Kms_Driven']>400000].index)df1.loc[removing_indexes,'label']='Removing'#Plottarget='Selling_Price'features=df.columns.drop(target)colors=['#0055ff','#ff7000','#23bf00']CustomPalette=sns.set_palette(sns.color_palette(colors))fig,ax=plt.subplots(nrows=3,ncols=3,figsize=(15,12),dpi=200)foriinrange(len(features)):x=i//3y=i%3sns.scatterplot(data=df1,x=features[i],y=target,hue='label',ax=ax[x,y])ax[x,y].set_title('{}vs.{}'.format(target,features[i]),size=15)ax[x,y].set_xlabel(features[i],size=12)ax[x,y].set_ylabel(target,size=12)ax[x,y].grid()ax[2,1].axis('off')ax[2,2].axis('off')plt.tight_layout()plt.show()用綠色繪制最佳異常值的代碼
?異常值用綠色標(biāo)記讓我們看看完美的異常值:removing_indexes=list(set(removing_indexes))removing_indexes列出最佳異常值的代碼?原始異常值指數(shù)列表我們有2個。我們必須刪除它們。但在此之前,我們必須檢查數(shù)據(jù)集中是否存在空數(shù)據(jù)。df.isnull().sum()查找每列中空條目的數(shù)量我們的數(shù)據(jù)集中沒有空值。?數(shù)據(jù)集中沒有空值讓我們刪除已識別的異常值并重置數(shù)據(jù)幀的索引。df1=df.copy()df1.drop(removing_indexes,inplace=True)df1.reset_index(drop=True,inplace=True)從數(shù)據(jù)框中刪除異常值分析數(shù)據(jù)集讓我們分析一下數(shù)據(jù),看看每個字段/類別與汽車的售價有多少相關(guān)性。我們需要對我們的數(shù)據(jù)集進(jìn)行一些分析才能得出一些結(jié)論。為此,我們必須識別數(shù)據(jù)集中的數(shù)值和分類字段,因為每種類型的繪制方法都不同。NumCols=['Age','Selling_Price','Present_Price','Kms_Driven','Owner']CatCols=['Fuel_Type','Seller_Type','Transmission']數(shù)字和分類列的列表雙變量分析如果您不熟悉什么是雙變量分析,\o"這里有一個基本定義"這里有一個基本定義:雙變量分析是最簡單的定量分析形式之一。它涉及對兩個變量的分析,以確定它們之間的經(jīng)驗關(guān)系。雙變量分析有助于檢驗簡單的關(guān)聯(lián)假設(shè)。讓我們使用雙變量分析將銷售價格與其他列進(jìn)行比較,并嘗試從該數(shù)據(jù)中得出一些結(jié)論。銷售價格與數(shù)字特征雙變量分析讓我們使用雙變量分析將數(shù)值特征與銷售價格進(jìn)行比較。數(shù)值列將繪制在散點圖中。fig,ax=plt.subplots(nrows=2,ncols=2,figsize=(10,10),dpi=90)num_features=['Present_Price','Kms_Driven','Age','Owner']target='Selling_Price'c='#0055ff'foriinrange(len(num_features)):row=i//2col=i%2ax[row,col].scatter(df1[num_features[i]],df1[target],color=c,edgecolors='w',linewidths=0.25)ax[row,col].set_title('{}vs.{}'.format(target,num_features[i]),size=12)ax[row,col].set_xlabel(num_features[i],size=12)ax[row,col].set_ylabel(target,size=12)ax[row,col].grid()plt.suptitle('SellingPricevs.NumericalFeatures',size=20)plt.tight_layout()plt.show()數(shù)值列與售價的比較
?銷售價格與數(shù)字特征雙變量分析銷售價格與分類特征雙變量分析讓我們使用雙變量分析將分類特征與銷售價格進(jìn)行比較。分類列將繪制在帶狀圖中。這給出了類別中多個值之間的比較。fig,axes=plt.subplots(nrows=1,ncols=3,figsize=(12,5),dpi=100)cat_features=['Fuel_Type','Seller_Type','Transmission']target='Selling_Price'c='#0055ff'foriinrange(len(cat_features)):sns.stripplot(ax=axes[i],x=cat_features[i],y=target,data=df1,size=6,color=c)axes[i].set_title('{}vs.{}'.format(target,cat_features[i]),size=13)axes[i].set_xlabel(cat_features[i],size=12)axes[i].set_ylabel(target,size=12)axes[i].grid()plt.suptitle('SellingPricevs.CategoricalFeatures',size=20)plt.tight_layout()plt.show()分類列與售價的比較
?銷售價格與分類特征雙變量分析以下是我們從數(shù)據(jù)分析中可以得出的結(jié)論:隨著現(xiàn)價上漲,售價也會上漲。它們是成正比的。銷售價格與行駛公里數(shù)成反比。售價與汽車的車齡成反比。隨著舊車擁有者數(shù)量的增加,其售價會下降。所以售價與所有者成反比。就售價而言,柴油車>CNG汽車>汽油車。個人銷售汽車的銷售價格低于經(jīng)銷商銷售汽車的價格。自動擋汽車比手動擋汽車貴。分類變量編碼我們不能按原樣使用分類字段。它們必須轉(zhuǎn)換為數(shù)字,因為機器只能理解數(shù)字。我們以“燃料”列為例。根據(jù)我們的數(shù)據(jù)集,我們的汽車使用兩種燃料。它們是汽油和柴油。分類變量編碼會將燃料列分為2列(Fuel_Type_Petrol和Fuel_Type_Diesel)。假設(shè)一輛汽車使用汽油。對于此汽車,數(shù)據(jù)將轉(zhuǎn)換為Fuel_Type_Petrol列設(shè)置為1(True),F(xiàn)uel_Type_Diesel列設(shè)置為0(False)。計算機可以理解1和0,而不是“汽油”和“柴油”。為此,我們將對分類列執(zhí)行one-hot編碼。Pandas提供了get_dummies對列進(jìn)行編碼的方法。CatCols=['Fuel_Type','Seller_Type','Transmission']df1=pd.get_dummies(df1,columns=CatCols,drop_first=True)df1.head(5)對分類列進(jìn)行One-Hot編碼
?分類變量編碼假設(shè)True和分別False是0和。1相關(guān)性分析相關(guān)矩陣是總結(jié)數(shù)據(jù)集中變量對之間線性關(guān)系的強度和方向的矩陣。它是統(tǒng)計和數(shù)據(jù)分析中的重要工具,用于檢查變量之間的關(guān)聯(lián)模式并了解它們?nèi)绾蜗嚓P(guān)。如果值為正,則相關(guān)性為正比;如果值為負(fù),則相關(guān)性為反比。這是查找與銷售價格相關(guān)的相關(guān)矩陣的代碼。target='Selling_Price'cmap=sns.diverging_palette(125,28,s=100,l=65,sep=50,as_cmap=True)fig,ax=plt.subplots(figsize=(9,8),dpi=80)ax=sns.heatmap(pd.concat([df1.drop(target,axis=1),df1[target]],axis=1).corr(),annot=True,cmap=cmap)plt.show()繪制相關(guān)矩陣?相關(guān)矩陣從上面的矩陣中,我們可以推斷出目標(biāo)變量“銷售價格”與當(dāng)前價格、賣家類型和燃料類型高度相關(guān)。如何構(gòu)建模型我們已經(jīng)到了最后階段。讓我們訓(xùn)練和測試我們的模型。讓我們從輸入中刪除“Selling_Price”并將其設(shè)置為輸出。這意味著它必須被預(yù)測。X=df1.drop('Selling_Price',axis=1)y=df1['Selling_Price']將輸入和輸出(銷售價格)拆分為單獨的數(shù)據(jù)幀讓我們分割數(shù)據(jù)集,將70%的數(shù)據(jù)用于訓(xùn)練,30%的數(shù)據(jù)用于測試。X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)將原始數(shù)據(jù)集拆分為測試數(shù)據(jù)集和訓(xùn)練數(shù)據(jù)集讓我們備份我們的測試數(shù)據(jù)。我們需要這個來進(jìn)行最終比較。y_test_actual=y_test擁有原始輸出的副本標(biāo)準(zhǔn)化數(shù)據(jù)集這StandardScaler是機器學(xué)習(xí)和數(shù)據(jù)分析中常用的一種預(yù)處理技術(shù),用于標(biāo)準(zhǔn)化或規(guī)范化數(shù)據(jù)集的特征(變量)。其主要目的是轉(zhuǎn)換數(shù)據(jù),使每個特征的平均值為0,標(biāo)準(zhǔn)差為1。讓我們使用標(biāo)準(zhǔn)化我們的數(shù)據(jù)集StandardScaler。scaler=StandardScaler()scaler.fit(X_train)X_train_scaled=scaler.transform(X_train)X_test_scaled=scaler.transform(X_test)標(biāo)準(zhǔn)化輸入數(shù)據(jù)集非常重要的是,StandardScaler變換只能從訓(xùn)練集中獲得,否則會導(dǎo)致數(shù)據(jù)泄漏。訓(xùn)練模型linear_reg=LinearRegression()linear_reg.fit(X_train_scaled,y_train)訓(xùn)練模型讓我們找到訓(xùn)練數(shù)據(jù)集中每列的截距和系數(shù)。pd.DataFrame(data=np.append(linear_ercept_,linear_reg.coef_),index=['Intercept']+[col+"Coef."forcolinX.columns],columns=['Value']).sort_values('Value',ascending=False)求斜率和截距?斜率和截距值如何評估模型ScikitLearn提供了指標(biāo)功能,可以幫助我們衡量模型的指標(biāo)。我們可以用它來確定指標(biāo),包括均方誤差、平均絕對誤差、均方根誤差和R2分?jǐn)?shù)?,F(xiàn)在是時候評估模型了:defmodel_evaluation(model,X_test,y_test,model_name):y_pred=model.predict(X_test)MAE=metrics.mean_absolute_error(y_test,y_pred)MSE=metrics.mean_squared_error(y_test,y_pred)RMSE=np.sqrt(MSE)R2_Score=metrics.r2_score(y_test,y_pred)returnpd.DataFrame([MAE,MSE,RMSE,R2_Score],index=['MAE','MSE','RMSE','R2-Score'],columns=[model_name])model_evaluation(linear_reg,X_test_scaled,y_test,'LinearReg.')模型評估?模型評估使用K折交叉驗證評估模型在k折交叉驗證中,數(shù)據(jù)集被分為k個大小大致相等的子集或“折疊”。該模型被訓(xùn)練和評估k次,每次使用不同的折疊作為驗證集,剩余的折疊作為訓(xùn)練集。然后對這k次運行的結(jié)果(例如準(zhǔn)確度、誤差)進(jìn)行平均,以獲得對模型性能的更穩(wěn)健的估計。優(yōu)點是每個數(shù)據(jù)點都用于訓(xùn)練和驗證,降低了評估中的偏差風(fēng)險。linear_reg_cv=LinearRegression()scaler=StandardScaler()pipeline=make_pipeline(StandardScaler(),LinearRegression())kf=KFold(n_splits=6,shuffle=True,random_state=0)scoring=['neg_mean_absolute_error','neg_mean_squared_error','neg_root_mean_squared_error','r2']result=cross_validate(pipeline,X,y,cv=kf,return_train_score=True,scoring=scoring)MAE_mean=(-result['test_neg_mean_absolute_error']).mean()MAE_std=(-result['tes
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年房地產(chǎn)開發(fā)與建筑施工合作協(xié)議
- 2024大數(shù)據(jù)分析服務(wù)合同保密協(xié)議
- 2024年數(shù)據(jù)中心保安維護(hù)協(xié)議
- 車間培訓(xùn)工作總結(jié)7篇
- 小青蛙的教學(xué)反思模板5篇
- 鋼框架結(jié)構(gòu)施工質(zhì)量保障方案
- 教育機構(gòu)課程質(zhì)量保證制度
- 水利工程漿砌片石施工方案
- 2024至2030年中國項目組合管理軟件行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國蛋殼分離器數(shù)據(jù)監(jiān)測研究報告
- 新產(chǎn)品試制流程管理辦法
- 通用橫版企業(yè)報價單模板
- 潛油泵及潛油泵加油機講義
- 物業(yè)服務(wù)公司各崗位規(guī)范用語
- 醫(yī)患溝通內(nèi)容要求記錄模板(入院、入院三日、術(shù)前、術(shù)后、出院)
- 航海學(xué)天文定位第四篇第6章天文定位
- 淺談深度教學(xué)中小學(xué)數(shù)學(xué)U型學(xué)習(xí)模式
- 物理電學(xué)暗箱專題30道
- 裝修公司員工勞動合同
- 江西上饒鉛山汽車駕駛科目三考試線路
- 通過一起放火案件淺析放火案件的移交工作
評論
0/150
提交評論