以下題目均非原創,只是匯總
python數據分析部分##
1. 如何利用SciKit包訓練一個簡單的線性回歸模型
利用linear_model.LinearRegression()函數
# Create linear regression object
regr = linear_model.LinearRegression()
# Train the model using the training sets
regr.fit(data_X_train, data_y_train)
2. 例舉幾個常用的python分析數據包及其作用
數據處理和分析:NumPy, SciPy, Pandas
機器學習:SciKit
可視化: Matplotlib, Seaborn
3. 如何利用Numpy對數列的前n項進行排序
使用argsort()
函數:x[x [: n-1].argsort ()]
4. 如何檢驗一個數據集或者時間序列是隨機分布的
畫lag plot(Correlogram:相關圖),如果圖上的點呈散亂分布,則為隨機
5. 在python中如何創建包含不同類型數據的dataframe
利用pandas包的DataFrame函數的serias創建列然后用dtype定義類型:
df = pd.DataFrame({'x': pd.Series(['1.0', '2.0', '3.0'], dtype=float), 'y': pd.Series(['1', '2', '3'], dtype=int)})
6. Pandas中使用的標准數據缺失標志是什么
NaN
7. 描述numpy array比python list的優勢
a. numpy array比python list更緊湊,存儲數據占的空間小,讀寫速度快。(這是由於python list儲存的是指向對象(至少需要16個字節)的指針(至少4個字節);而array中儲存的是單一變量(比如單精度浮點數為4個字節,雙精度為8))
b. array可以直接使用vector和matrix類型的處理函數,非常方便。
8. 如何檢驗numpy的array為空
使用size
函數, 比如
a = np.array([])
print a.size # 0
**9. 如何檢驗pandas dataframe為空?
使用empty
函數
python 基礎操作部分##
1. 如何在python中復制對象
使用copy包的copy
和deepcopy
函數。其中,copy
僅拷貝對象本身,而不拷貝對象中引用的其它對象;deepcopy
除拷貝對象本身,而且拷貝對象中引用的其它對象。
2. PEP8是什么
python語言的編程規范,提高代碼可讀性
3. init.py是什么
一個空文件,用於將導入目錄中的模塊。比如有一個模塊是maindir/subdir/module.py,init.py 可以使之可以通過以下形式導入。import maindir.subdir.module
4. range()
和xrange()
函數的差異
range()
生成的是list,而xrange()
生成的是迭代器(iterator)。例如:
range(5) # [0, 1, 2, 3, 4]
xrange(5)
list(xrange(1,5)) # [1, 2, 3, 4]
5. 如何對list中的item進行隨機重排
使用shuffle()
函數
6. python中用於發現bug的工具
Pylint和Pychecker. Pylint可以檢驗模塊是否滿足所有的編程標准;Pychecker則是靜態分析工具。
7. 裝飾器的作用
裝飾器可用於修飾函數或類。通過裝飾器可以包裹函數或類使之執行之前或之后調用裝飾器函數,從而達到抽離出大量函數中與函數功能本身無關的雷同代碼並繼續重用的目的。比較經典的廚力場景有檢驗權限,追蹤參數,日志登陸等。
def makebold(fn):
def wrapped():
return "<b>" + fn() + "</b>"
return wrapped
def makeitalic(fn):
def wrapped():
return "<i>" + fn() + "</i>"
return wrapped
@makebold
@makeitalic
def hello():
return "hello world"
python程序解析部分##
- 以下代碼的輸出?
def multipliers():
return [lambda x: i * x for i in range(4)]
print [m(2) for m in multipliers()]
輸出為[6,6,6,6]。 這個的原因是 Python 的閉包的后期綁定導致的 late binding,這意味着在閉包中的變量是在內部函數被調用的時候被查找。所以結果是,當任何 multipliers() 返回的函數被調用,在那時,i 的值是在它被調用時的周圍作用域中查找,到那時,無論哪個返回的函數被調用,for 循環都已經完成了,i 最后的值是 3,因此,每個返回的函數 multiplies 的值都是 3。因此一個等於 2 的值被傳遞進以上代碼,它們將返回一個值 6 (比如: 3 x 2)。
- 以下代碼是否報錯
list= [‘a’,’e’,’i’,’o’,’u’]
print list [8:]
輸出為[]。 訪問一個列表的以超出列表成員數作為開始索引的切片將不會導致 IndexError,並且將僅僅返回一個空列表。
- 以下代碼的輸出
def foo (i= []):
i.append (1)
return i
foo ()
foo ()
輸出為[1],[1,1]。 新的默認列表僅僅只在函數被定義時創建一次。當foo沒有被指定的列表參數調用的時候,其使用的是同一個列表。
數學統計學部分##
1. 什么是邏輯斯蒂回歸(logistic regression)、
邏輯斯蒂回歸常指邏輯回歸模型,用於預測參數之間組合可能輸出的二分結果。
2. 推薦系統、協同過濾
3. P值的意義
決定假設檢驗的的結果是否顯著
4. 監督學習和非監督學習,機器學習算法
5. A/B測試
對有兩個變量A,B的隨機試驗進行的統計結果測試,目的是識別改動對網頁點擊率的影響從而獲得實現最大化的改動。
6. 特征值和特征向量
在數據分析是通過計算相關和協方差矩陣的特征向量可以用於確定之后的線性轉換的方向。特征值表示特征向量方向轉化或者壓縮的強度。
7. 如何評價一個邏輯斯蒂模型
- 用分類矩陣查看真陰性和假陽性
- 一致性分析: 查看邏輯斯蒂模型區分事件是否發生的能力
- 與隨機選擇模型進行對比
8. 項目分析的步驟
- 理解問題
- 探索數據
- 准備數據用於建模
- 建模
- 測試
- 上線執行並追蹤
9. 如何處理缺失數據?(如果缺失的數據不可得,將采用何種手段收集?)
首先判斷缺失數據是否有意義,如果沒有意義或者缺失數據的比例超過80%直接去掉。如果缺失數據有規律,則需根據其變化規律來推測次缺失值;如果數據沒有規律,則用其他值代替:
如果數據符合正態分布,缺失值用期望值代替
如果數據是類型變量,則用默認類型值代替缺失值
10. 描述K-Means Clustering算法
11. 邏輯斯蒂回歸和線性回歸的區別
邏輯斯蒂回歸的預測值是兩元的,0或1;而線性回歸的預測值是連續的。
12. 如何證明根號2是無理數
13. 統計中國有多少樹