機器學習1-sklearn&字典特徵抽取

清風紫雪發表於2021-01-16

sklearn資料集

資料集API介紹

sklearn.datasets

  • 載入獲取流行資料集
  • datasets.load_*()
  • 獲取小規模資料集,資料包含在datasets裡
  • datasets.fetch_*(data_home=None)
  • 獲取大規模資料集,需要從網路上下載,函式的第一個引數是data_home,表示資料集下載的目錄,預設是 ~/scikit_learn_data/

sklearn小資料集

  • sklearn.datasets.load_iris()

    載入並返回鳶尾花資料集

  • sklearn.datasets.load_boston()

    載入並返回波士頓房價資料集

sklearn大資料集

  • sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
    • subset:'train'或者'test','all',可選,選擇要載入的資料集。
    • 訓練集的“訓練”,測試集的“測試”,兩者的“全部”

sklearn資料集的使用

 

 

 

sklearn資料集返回值介紹

  • load和fetch返回的資料型別datasets.base.Bunch(字典格式)如下:
  • data:特徵資料陣列,是 [n_samples * n_features] 的二維 numpy.ndarray 陣列
  • target:標籤陣列,是 n_samples 的一維 numpy.ndarray 陣列
  • DESCR:資料描述
  • feature_names:特徵名,新聞資料,手寫數字、迴歸資料集沒有
  • target_names:標籤名
def datasets_demo():
    """
    sklearn資料集使用
    """
    #獲取資料集
    iris=load_iris()
    print("鳶尾花資料集:\n",iris)
    print("檢視資料集描述:\n",iris.DESCR)
    print("檢視特徵值的名字:\n",iris.feature_names)
    print("檢視特徵值:\n",iris.data,iris.data.shape)

    #資料集劃分
    # 訓練集的特徵值x_train 測試集的特徵值x_test 訓練集的目標值y_train 測試集的目標值y_test
    x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.2,random_state=22)
    #訓練集的特徵值
    print("訓練集的特徵值:\n",x_train,x_train.shape )
    # 隨機數種子
    x_train1, x_test1, y_train1, y_test1 = train_test_split(iris.data, iris.target, random_state=6)
    x_train2, x_test2, y_train2, y_test2 = train_test_split(iris.data, iris.target, random_state=6)
    print("如果隨機數種子不一致:\n", x_train == x_train1)
    print("如果隨機數種子一致:\n", x_train1 == x_train2)
    return None

特徵提取

字典特徵提取

作用:對字典資料進行特徵值化

  • sklearn.feature_extraction.DictVectorizer(sparse=True,…)
    • DictVectorizer.fit_transform(X) X:字典或者包含字典的迭代器返回值:返回sparse矩陣
    • DictVectorizer.inverse_transform(X) X:array陣列或者sparse矩陣 返回值:轉換之前資料格式
    • DictVectorizer.get_feature_names() 返回類別名稱

我們對以下資料進行特徵提取

[{'city': '北京','temperature':100}
{'city': '上海','temperature':60}
{'city': '深圳','temperature':30}]
def dict_demo():
    """
       對字典型別的資料進行特徵抽取
       :return: None
       """
    data = [{'city': '北京', 'temperature': 100}, {'city': '上海', 'temperature': 60}, {'city': '深圳', 'temperature': 30}]
    # 1、例項化一個轉換器類
    transfer = DictVectorizer(sparse=False)
    # 2、呼叫fit_transform
    data = transfer.fit_transform(data)
    print("返回的結果:\n", data)
    # 列印特徵名字
    print("特徵名字:\n", transfer.get_feature_names())
    return None

 

 對於特徵當中存在類別資訊的我們都會做one-hot編碼處理

相關文章