C DataSet操作for與foreach的區別

2021-08-08 19:51:27 字數 978 閱讀 2693

最近因為專案需要,繼而轉戰到c#的探索中,我想在c#中資料集操作是非常頻繁的,在學習過程中我遇到了一些問題,所以記錄下來以免以後忘記,同時也希望幫助到有需要的人!

在操作dataset中我們怎麼來遍歷乙個資料集呢,一般我們會這麼做:

private void weightsnormalized(dataset ds)

}}

這樣做確實非常簡單上手,我們還有另外一種操作方式,是這樣的:

private void weightsnormalized(dataset ds)

}}

對於只對資料讀取而言,以上兩種方法都是正確的,但對於特殊需要而言,這還是有區別的。

在最近的專案中涉及到了權重計算的演算法問題,比如依據乙個城市的人口密度算權重,最後算出來的權重之和竟然不是1,我想應該是浮點誤差造成的。所以要進行特殊處理,即在計算最後一權重值時,用1減去前面的的權重和,即可解決最後權重和不為1的情況。

假設各個城市的權重值都以乙個城市為乙個datatable為單位,存放在乙個dataset中,所有我要對整個dataset進行遍歷,對各個城市的權重進行歸一化處理。

用第一種方法來做處理:

private void weightsnormalized(dataset ds)

else

index++;}}

}

這樣看似沒有什麼問題,但是最後在執行時,計算結果就不正確了,所有值都亂了。這是為什麼呢?我想應該是foreach這種遍歷方法不是取位址,而是拷貝,所以達不到預期的效果。所以我就採用了第二種方法:

private void weightsnormalized(dataset ds)

else}}

}

果不其然,最後的執行結果,達到了我想要的效果,可以在遍歷的時候改變了dataset的內容。

PR曲線與F值

pr曲線與roc曲線都是評價乙個機器學習演算法的標準,那麼不同點在 呢,首先我們還是看下面幾個值 tp 真正 實際正 fp 假正 實際負 tn 真負 實際負 fn 假負 實際正 與roc曲線不同的是,pr曲線用 precision 準確率和 recall 召回率分別作為橫縱座標。precision ...

lf與 f的區別

f和 lf分別是float型別和double型別用於格式化輸入輸出時對應的格式符號。其中 float,單精度浮點型,對應 f.double,雙精度浮點型,對應 lf.在用於輸出時 float型別可以使用 lf格式,但不會有任何好處。double型別如果使用了 f格式可能會導致輸出錯誤。printf中...

F 與數學 數字運算與F PowerPack

這篇文章是此系列中的第一篇,在這個系列中,我將介紹 f 中的一些特性,如對數字運算有幫助的特性以及一些來自 f powerpack 庫的一些功能。大部分內容最初都是為位於 msdn 上名為 f 中的數字運算 的章節 我之前發布的 所寫的,但是後來,我們決定把重點放到使用第三方語言庫的 f 程式設計上...