Featuretools ialah perpustakaan Python untuk kejuruteraan ciri automatik. Ia bertujuan untuk memudahkan proses kejuruteraan ciri dan meningkatkan prestasi model pembelajaran mesin. Perpustakaan secara automatik boleh mengekstrak ciri berguna daripada data mentah, membantu pengguna menjimatkan masa dan usaha sambil meningkatkan ketepatan model.
Berikut ialah langkah tentang cara menggunakan Featuretools untuk mengautomasikan kejuruteraan ciri:
Sebelum menggunakan Featuretools, anda perlu menyediakan set data. Set data mestilah dalam format Pandas DataFrame, di mana setiap baris mewakili pemerhatian dan setiap lajur mewakili ciri. Bagi masalah klasifikasi dan regresi, set data mestilah mengandungi pembolehubah sasaran, manakala bagi masalah pengelompokan, set data tidak memerlukan pembolehubah sasaran. Oleh itu, apabila menggunakan Featuretools, pastikan set data memenuhi keperluan ini supaya kejuruteraan ciri dan penjanaan ciri dapat dilakukan dengan cekap.
Apabila menggunakan Featuretools untuk kejuruteraan ciri, anda perlu mentakrifkan entiti dan perhubungan terlebih dahulu. Entiti ialah subset set data yang mengandungi set ciri yang berkaitan. Contohnya, pada tapak web e-dagang, pesanan, pengguna, produk, pembayaran, dll. boleh dianggap sebagai entiti yang berbeza. Perhubungan ialah sambungan antara entiti Contohnya, pesanan mungkin dikaitkan dengan pengguna dan pengguna boleh membeli berbilang produk. Dengan mentakrifkan entiti dan perhubungan dengan jelas, struktur set data boleh difahami dengan lebih baik, yang memudahkan penjanaan ciri dan analisis data.
Menggunakan Featuretools, anda boleh mencipta set entiti dengan mentakrifkan entiti dan perhubungan. Set entiti ialah koleksi berbilang entiti. Dalam langkah ini, anda perlu menentukan nama, set data, indeks, jenis pembolehubah dan cap masa bagi setiap entiti. Contohnya, set entiti yang mengandungi pesanan dan entiti pengguna boleh dibuat menggunakan kod berikut:
import featuretools as ft # Create entity set es=ft.EntitySet(id='ecommerce') # Define entities orders=ft.Entity(id='orders',dataframe=orders_df,index='order_id',time_index='order_time') users=ft.Entity(id='users',dataframe=users_df,index='user_id') # Add entities to entity set es=es.entity_from_dataframe(entity_id='orders',dataframe=orders_df,index='order_id',time_index='order_time') es=es.entity_from_dataframe(entity_id='users',dataframe=users_df,index='user_id')
Di sini, kami menggunakan EntitySet untuk mencipta set entiti bernama "e-dagang" dan mentakrifkan dua entiti menggunakan Entiti, Pesanan dan Pengguna . Untuk entiti pesanan, kami menetapkan ID pesanan sebagai indeks dan masa pesanan sebagai cap waktu. Untuk entiti pengguna, kami hanya menentukan ID pengguna sebagai indeks.
Dalam langkah ini, anda perlu mentakrifkan perhubungan antara entiti. Menggunakan Featuretools, perhubungan boleh ditakrifkan melalui pembolehubah yang dikongsi, cap masa, dsb. antara entiti. Sebagai contoh, pada tapak web e-dagang, setiap pesanan dikaitkan dengan pengguna. Hubungan antara pesanan dan pengguna boleh ditakrifkan menggunakan kod berikut:
# Define relationships r_order_user = ft.Relationship(orders['user_id'], users['user_id']) es = es.add_relationship(r_order_user)
Di sini, kami telah mentakrifkan hubungan antara pesanan dan pengguna menggunakan Perhubungan dan menambahkannya pada set entiti menggunakan add_relationship.
Selepas melengkapkan langkah di atas, anda boleh menggunakan algoritma sintesis ciri dalam Featuretools untuk menjana ciri secara automatik. Algoritma ini secara automatik mencipta ciri baharu seperti pengagregatan, transformasi dan gabungan. Anda boleh menggunakan kod berikut untuk menjalankan algoritma sintesis ciri mendalam:
# Run deep feature synthesis algorithm features, feature_names = ft.dfs(entityset=es, target_entity='orders', max_depth=2)
Di sini, kami menggunakan fungsi dfs untuk menjalankan algoritma sintesis ciri mendalam, menentukan entiti sasaran sebagai entiti pesanan dan menetapkan kedalaman maksimum kepada 2. Fungsi ini mengembalikan DataFrame yang mengandungi ciri baharu dan senarai nama ciri.
Selepas anda memperoleh ciri baharu, anda boleh menggunakannya untuk melatih model pembelajaran mesin. Ciri baharu boleh ditambah pada set data asal menggunakan kod berikut:
# Add new features to original dataset df=pd.merge(orders_df,features,left_on='order_id',right_on='order_id')
Di sini, kami menggunakan fungsi gabungan untuk menambah ciri baharu pada set data asal untuk latihan dan ujian. Ciri baharu kemudiannya boleh digunakan untuk melatih model pembelajaran mesin, contohnya:
# Split dataset into train and test sets X_train, X_test, y_train, y_test = train_test_split(df[feature_names], df['target'], test_size=0.2, random_state=42) # Train machine learning model model = RandomForestClassifier() model.fit(X_train, y_train) # Evaluate model performance y_pred = model.predict(X_test) accuracy_score(y_test, y_pred)
Di sini, kami menggunakan pengelas hutan rawak sebagai model pembelajaran mesin dan menggunakan set latihan untuk melatih model. Kami kemudian menggunakan set ujian untuk menilai prestasi model, menggunakan ketepatan sebagai metrik penilaian.
Langkah-langkah untuk menggunakan Featuretools untuk mengautomasikan kejuruteraan ciri termasuk menyediakan data, menentukan entiti dan perhubungan, mencipta set entiti, mentakrifkan perhubungan, menjalankan algoritma sintesis ciri yang mendalam dan membina model. Featuretools boleh mengekstrak ciri berguna secara automatik daripada data mentah, membantu pengguna menjimatkan banyak masa dan usaha serta meningkatkan prestasi model pembelajaran mesin.
Atas ialah kandungan terperinci Laksanakan kejuruteraan ciri automatik menggunakan Featuretools. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!