2017年高教社杯全国大学生数学建模竞赛题目--C题 颜色与物质浓度辨识
目錄
問題
第一問:
數(shù)據(jù)導入
?(1)pd.read_excel
(2)讀取報錯ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.
數(shù)據(jù)分析
(1)describe()
組胺:
(1)ValueError: could not convert string to float的解決方法
剩下同理
貼個代碼
結果:?
問題
?
第一問:
分析附件Data1.xls里的數(shù)據(jù)可知,顏色的數(shù)據(jù)是用RGB模式表示,即用:紅 、綠、藍三種顏色的數(shù)值,共同得出真實顏色的數(shù)值。通過在網(wǎng)上的查找,可以使用一下公式計算顏色值:
顏色值 = 65536Red+256Green+Blue。然后我有了解了色調和飽和度的概念。
色調:色調是指圖像的相對明暗程度,在彩色圖像上表現(xiàn)為顏色。在rgb中色調越低,顏色更加偏向于紅色。色調越高,顏色更加偏向于藍色。
飽和度:飽和度決定了顏色空間中顏色分量,飽和度越高,說明顏色越深,飽和度越低,說明顏色越淺。
R方:確定系數(shù),是通過數(shù)據(jù)的變化來表征一個擬合的好壞。由上面的表達式可以知道“確定系數(shù)”的正常取值范圍為[0 1],越接近1,表明方程的變量對y的解釋能力越強,這個模型對數(shù)據(jù)擬合的也較好.
首先,通過利用pandas庫里的corr函數(shù),得到所給數(shù)據(jù)滿足線性關系,所以我建立多元線性回歸模型。最后準則我選擇確定系數(shù)(即R方),通過比較五組數(shù)據(jù)的擬合程度,進而比較五組數(shù)據(jù)的準確性。
我分別對每種物質的數(shù)據(jù)進行多元線性回歸,并求其R方值
數(shù)據(jù)導入
?(1)pd.read_excel
在這里需要注意!!!使用pandas每次打開文件的時候行索引都會變?yōu)?,1,2,3,4……,所以寫excel的時候需要去除索引
pd.read_excel( 'path_to_file.xls', # xlsx文件的路徑 sheet_name='Sheet1', # 'Sheet1'讀取'Sheet1' , 也可以是一個列表[0,1]:讀取前兩個sheet header=3, # 從第3行開始讀,且第2行為列索引 index_col=[3], # 第三列為行索引 names=list('abcd') # 修改列標簽為 'a','b','c','d' usecols='a' # 'a': 只讀第’a'列 ['a','c']:讀取'a','c'列;[0,1,2]或[0]:只讀第0,1,2列或者只讀第[0]列;3:只讀前三列 skiprows=2 # 自上而下省略兩行 skip_footer=2 # 自下而上省略兩行 )usecols也可以是一個函數(shù):
pd.read_excel(‘path_to_file.xls’, ‘Sheet1’, usecols=lambda x: x.isalpha())
寫入excel文件
data.to_excel(‘file.xlsx’,index=None) # 不寫入index
(2)讀取報錯ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.
pip install xlrd
數(shù)據(jù)分析
(1)describe()
pandas 是基于numpy構建的含有更高級數(shù)據(jù)結構和工具的數(shù)據(jù)分析包,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas有兩個核心數(shù)據(jù)結構 Series和DataFrame,分別對應了一維的序列和二維的表結構。而describe()函數(shù)就是返回這兩個核心數(shù)據(jù)結構的統(tǒng)計變量。其目的在于觀察這一系列數(shù)據(jù)的范圍、大小、波動趨勢等等,為后面的模型選擇打下基礎。
?參考鏈接:https://blog.csdn.net/qq_24754061/article/details/103738513
組胺:
(1)loc函數(shù):通過行索引 "Index" 中的具體值來取行數(shù)據(jù)(如取"Index"為"A"的行)
(2)iloc函數(shù):通過行號來取行數(shù)據(jù)(如取第二行的數(shù)據(jù))
參考鏈接:https://blog.csdn.net/W_weiying/article/details/81411257
(1)ValueError: could not convert string to float的解決方法
把水改成0
?
剩下同理
注意就是我們截取的表格段不一樣所以說就不一樣,,遇到水的話,可以給他賦值成0,我是用的暴力破解法,直接一個一個的賦值。
貼個代碼
#硫酸鋁鉀: jia_data=data[33:70] jia_data=jia_data.iloc[:,[1,2,3,4,5,6]]#讀取所有行和123456列 print(jia_data) print(jia_data.corr())#特征化處理,變成0-1之間的 x=jia_data.iloc[:,[1,2,3,4,5]] print(x) #print("=======================") #print("") jia_data.iloc[[0],[0]]=0 jia_data.iloc[[1],[0]]=0 jia_data.iloc[[2],[0]]=0 jia_data.iloc[[3],[0]]=0 jia_data.iloc[[4],[0]]=0 jia_data.iloc[[5],[0]]=0 jia_data.iloc[[6],[0]]=0.5 jia_data.iloc[[7],[0]]=0.5 jia_data.iloc[[8],[0]]=0.5 jia_data.iloc[[9],[0]]=0.5 jia_data.iloc[[10],[0]]=0.5 jia_data.iloc[[11],[0]]=0.5 jia_data.iloc[[12],[0]]=0.5 jia_data.iloc[[13],[0]]=1 jia_data.iloc[[14],[0]]=1 jia_data.iloc[[15],[0]]=1 jia_data.iloc[[16],[0]]=1 jia_data.iloc[[17],[0]]=1 jia_data.iloc[[18],[0]]=1.5 jia_data.iloc[[19],[0]]=1.5 jia_data.iloc[[20],[0]]=1.5 jia_data.iloc[[21],[0]]=1.5 jia_data.iloc[[22],[0]]=1.5 jia_data.iloc[[23],[0]]=1.5 jia_data.iloc[[24],[0]]=2 jia_data.iloc[[25],[0]]=2 jia_data.iloc[[26],[0]]=2 jia_data.iloc[[27],[0]]=2 jia_data.iloc[[28],[0]]=2 jia_data.iloc[[29],[0]]=2 jia_data.iloc[[30],[0]]=5 jia_data.iloc[[31],[0]]=5 jia_data.iloc[[32],[0]]=5 jia_data.iloc[[33],[0]]=5 jia_data.iloc[[34],[0]]=5 jia_data.iloc[[35],[0]]=5 jia_data.iloc[[36],[0]]=5 y=jia_data.iloc[:,0] print(y) model=LinearRegression() model.fit(x,y) a=model.intercept_#截距 b=model.coef_#回歸系數(shù) print("擬合參數(shù):截距",a,"回歸系數(shù):",b) print("最佳擬合線:y=",round(a,2),"+",round(b[0],2),"*X1+",round(b[1],2),"*X2","+",round(b[2],2),"*X3 +",round(b[3],2),"*X4 +",round(b[4],2),"*X1") from sklearn import metrics mse = metrics.mean_squared_error(y,model.predict(x))#求出均方差 rmes=np.sqrt(mse) r22=model.score(x,y) print(r22) print("=================================================")結果:?
根據(jù)R值可知:擬合行從好到壞:組胺>溴酸鉀>奶中尿素>工業(yè)堿>硫酸鋁鉀
所以優(yōu)劣排序為:組胺>溴酸鉀>奶中尿素>工業(yè)堿>硫酸鋁鉀
第二問
題目要求對Data2.xls中的數(shù)據(jù)進行分析,并建立顏色讀數(shù)和物質濃度的數(shù)學模型。首先,我們還先對Data2.xls中的數(shù)據(jù)進行處理,并建立多元線性回歸模型,得出其最佳擬合曲線和確定系數(shù)。
數(shù)據(jù)導入和處理
?
?
?最后數(shù)據(jù)有點問題,因為填充表格自動填充得NAN ,所以說需要一個一個得補齊賦值。挺麻煩得。
總結
以上是生活随笔為你收集整理的2017年高教社杯全国大学生数学建模竞赛题目--C题 颜色与物质浓度辨识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 走向Web渗透工程师
- 下一篇: scholarscope不显示影响因子_